Для меня всё началось в конце 2022 года, когда @optozorax_dev опубликовал у себя на канале пост (https://t.me/optozorax_dev/577) про PGA (Projective Geometric Algebra). PGA — крайне регулярная и интуитивная алгебра, в которой удобно программировать геометрические вычисления.
Я раньше много прогал всякие задачки с вращающимися механизмами, где нужно переходить из одной системы координат в другую, вращать одни тела относительно других и т.п. Уже тогда мне сильно не нравился традиционный подход к вычислительной геометрии (т.е. классическая линейная алгебра):
- Поворот выполняется при помощи матриц поворота, в которых надо напрягаться и думать, как задавать направляющие синусы-косинусы
- Надо постоянно в голове рисовать «векторные произведения векторов по правилу правой тройки»
- Надо в коде отдельно следить за вырожденными случаями типа If[Length[vector] == 0], If[Sin[x]<0] и т. п.
- Существуют бесячие объекты по типу псевдовекторов (выглядит как вектор, но ведёт себя не как вектор)
- В координатной записи невозможно отличить точку от вектора и псевдовектора (все описываются просто тремя координатами)
- Явление Gimbal Lock — ситуации, в которых матрицы поворота перестают работать
- Для каждой операции над каждым объектом есть своя отдельная сложная для запоминания формула
PGA же, в отличие от линейной алгебры:
- Объединяет прямые, плоскости, вектора, точки и другие «примитивы» в единый объект — мультивектор
- Для операций над любыми объектами используются одни и те же формулы (одна формула для переноса плоскости/точки/прямой, одна формула для проекций, одна формула для пересечений и т.п.)
- Псевдовектора вписаны в PGA естественным образом
- В PGA заложена «автоматическая» обработка вырожденных случаев: например, формула для нахождения точки пересечения прямых, если они не пересекаются — просто выдаст т.н. «бесконечную точку»
- В PGA редко встречаются операции деления, поэтому в коде обычно не надо следить за случаями If[Length[vector] == 0]
- Формулы пересечений/проекций/поворотов/пр. обладают интуитивным геометрическим смыслом
В более широком контексте, PGA является одним из вариантов GA (Geometric Algebra). GA — класс алгебр с различными метриками и размерностями, объединяющий большое число математических систем (комплексные числа, кватернионы, спиноры и матрицы Паули и др.). Как следствие, GA предоставляет единый мат.аппарат для многих теоретических и прикладных областей физики (классическая и квантовая механики, электромагнетизм, гидродинамика, теория относительности, компьютерная графика, машинное обучение).
На мой взгляд, GA может претендовать на такую же революцию в науке, которая сейчас происходит с ИИ. Просто GA не имеет таких же наглядных плюсов, а значит про неё никто особо не в курсе. Поэтому GA может либо взлететь, обрести популярность и сделать счастливой жизни ботанской части населения планеты, либо остаться известной лишь небольшому числу специалистов.