UPD. Добавил картинки по построению и итоговому внешнему виду элемента Клиффорда, заданного комплексной матрицей 2х2, в первый и пятый раздел статьи.

Привет, Хабр!

Мы, программисты, инженеры и физики, привыкли к своему зоопарку математических инструментов. Векторы — для направлений и позиций. Матрицы — для трансформаций. Кватернионы — для вращений без головной боли с блокировкой осей. Комплексные числа — для 2D-поворотов и обработки сигналов. Каждый инструмент хорош для своей задачи, но мы постоянно переключаемся между ними, преобразуя данные и жонглируя концепциями.

А что, если я скажу вам, что существует единый математический объект, который может быть всем этим одновременно? Объект, который по своей природе является и скаляром, и вектором, и кватернионом, и даже спинором, в зависимости от того, как на него посмотреть.

Это не фантастика. Это — алгебра Клиффорда, также известная как геометрическая алгебра. Идея настолько мощная, что она способна навсегда изменить ваш взгляд на геометрию в 3D.

Пристегните ремни. Мы отправляемся в путешествие, где абстрактная алгебра превращается в наглядную геометрию. И огромное спасибо @master_program за переработку исходного текста в эту статью, а так же за дополнения и картинки, очень повысившие удобство чтения.

________________________________________________________________

Что общего между октаэдром, простейшей огранкой бриллианта, и геометрическо�� алгеброй? И что если я вам скажу, что элемент Клиффорда задает именно такой геометрический объект и называется он - октаэдр?

Октаэдр
Октаэдр

Ниже рассказ как это получается.

Шаг 1: Готовим сцену — Алгебра, где векторы можно перемножать

Что такое алгебра Клиффорда Cl(3,0)? Не пугайтесь названия. В основе — всего три базовых вектора из нашего родного 3D-пространства: e1,e2,e3. У них всего два правила жизни:

  1. Квадрат любого базового вектора равен +1

    \textbf{e}1↔σ1=\begin{pmatrix}   0 & 1\\ 1 & 0\end{pmatrix},\textbf{e}2↔σ2=\begin{pmatrix}   0 & i\\ -i & 0\end{pmatrix},\textbf{e}3↔σ3=\begin{pmatrix}   1 & 0\\ 0 & -1\end{pmatrix}.

  2. Они антикоммутируют

    \textbf{e}1\textbf{e}2=−\textbf{e}2\textbf{e}1.

Главное отличие от стандартной векторной алгебры в том, что здесь введено геометрическое произведение. Мы можем перемножать векторы и получать не просто число (скалярное произведение) или другой вектор (векторное произведение), а нечто более общее. Подробнее про данную операцию читайте в статье @master_program "Давайте забудем всё про скалярное и векторное. Есть способ гораздо лучше".

Для тех, кто любит матрицы, есть отличные новости. Эта алгебра изоморфна (то есть, структурно идентична) алгебре комплексных матриц 2×2. Мы можем просто сказать:

\textbf{e}1↔σ1=\begin{pmatrix}   0 & 1\\ 1 & 0\end{pmatrix},\textbf{e}2↔σ2=\begin{pmatrix}   0 & i\\ -i & 0\end{pmatrix},\textbf{e}3↔σ3=\begin{pmatrix}   1 & 0\\ 0 & -1\end{pmatrix}

Именно поэтому любой 3D-вектор v=(x,y,z) можно представить как матрицу \hat{v}:

\hat{v}=xσ1+yσ2+zσ3=\begin{pmatrix}   z & x-iy\\ x+iy & -z\end{pmatrix}

Это наш мост между абстрактной алгеброй и чем-то, что можно потрогать в коде.

Рисунок 1. Базовые элементы алгебры Клиффорда. Векторы (e1,e2,e3) задают направления, а бивекторы (e1e2 и т.д.) — ориентированные плоскости.
Рисунок 1. Базовые элементы алгебры Клиффорда. Векторы (e1,e2,e3) задают направления, а бивекторы (e1e2 и т.д.) — ориентированные плоскости.

Шаг 2: Великая формула представления

 \textbf{A}=\textbf{T}^*\hat{v}

Давайте расшифруем этот шифр:

  • \textbf{A} — это любой элемент алгебры Клиффорда. Не просто вектор, а вообще что угодно — сумма скаляра, вектора, чего-то еще... Наш главный герой.

  • \hat{v} — это какой-то фиксированный единичный вектор. Он как холст, на котором оператор рисует свою геометрию.

  • \textbf{T} — это оператор, который мы конструируем из двух произвольных 3D-векторов, v1 и v2: \textbf{T}=\textbf{v}1+i⋅\textbf{v}2

  • \textbf{T}^* — это его эрмитово-сопряженная версия: \textbf{T}^*=\textbf{v}1−i⋅\textbf{v}2.

  • геометрическое произведение здесь идентично матричному произведению.

Формула у��верждает нечто поразительное: геометрию любого элемента A можно полностью описать, найдя всего два вектора, v1 и v2, которые определяют его действие.

Но как именно они действуют?

___________________________________________________________________

Шаг 3: Вскрываем оператор T — танец реальной и мнимой геометрии

Забудем на секунду про матрицы и посмотрим, что происходит на уровне самой геометрии. Мы разберем, как каждая часть оператора T преобразует произвольный вектор v через геометрическое произведение.

Часть I: Действие «реального» вектора v1 — Кватернионы в действии

Что такое v1v? Это не точка и не крестик. Это геометрическое произведение, которое всегда можно разложить на две части:

  • Скалярная часть S=(v1⋅v): Это просто проекция v на направление v1. Она говорит нам, "насколько v смотрит в ту же сторону, что и v1". Это элемент масштабирования.

  • Бивекторная часть B=(v1∧v): Это самое интересное. Бивектор — это не вектор, а ориентированная плоскость, в которой лежат v1 и v. Его "величина" — это площадь параллелограмма, а "ориентация" — направление вращения от v1 к v. Бивекторы — это прирожденные генераторы вращений. Это работает почти как задание вектора в полярных координатах.

Рисунок 2. Визуализация геометрического произведения. Действие вектора v1 на v элегантно раскладывается на две ортогональные части: скалярную (проекция v на v1, показана жирной линией) и бивекторную (ориентированная плоскость, показана зеленым). Дуга указывает направление вращения, "закодированное" в бивекторе.
Рисунок 2. Визуализация геометрического произведения. Действие вектора v1 на v элегантно раскладывается на две ортогональные части: скалярную (проекция v на v1, показана жирной линией) и бивекторную (ориентированная плоскость, показана зеленым). Дуга указывает направление вращения, "закодированное" в бивекторе.

Смотрите, что получилось: скаляр + бивектор. Да это же в точности структура кватерниона! Поэтому назовем это действие "кватернионным". Вектор v1 отвечает за вращения и масштабирование.

Рисунок 3. Геометрия кватернионного вращения.Ротор R (кватернион вращения) поворачивает вектор v в новое положение v′ с помощью "сэндвич"-произведения. Вращение происходит в плоскости, параллельной бивектору, который является частью ротора.
Рисунок 3. Геометрия кватернионного вращения.Ротор R (кватернион вращения) поворачивает вектор v в новое положение v′ с помощью "сэндвич"-произведения. Вращение происходит в плоскости, параллельной бивектору, который является частью ротора.

Часть II: Действие «мнимого» вектора i⋅v2 — Магия дуальности

Теперь очередь i(v2v). Снова раскладываем произведение. Здесь и далее будем использовать I (псевдоскаляр e1e2e3) вместо i, чтобы быть ближе к геометрии:

  • Псевдоскалярная часть (I(v2⋅v)): Скалярное произведение — это число. Умноженное на I, оно становится элементом, описывающим объем или ориентацию (правое/левое). Но так же это проекция v на направление бивектора i⋅v2, заданное нормалью к плоскости бивектора.

  • Векторная часть (I(v2∧v)): Бивектор v2∧v — это плоскость. Умножение на I в 3D — это операция дуальности: она превращает плоскость в перпендикулярный ей вектор.

Итак, вектор v2 отвечает за преобразования, связанные с ориентацией и построением нормалей.

Итог:

Действие оператора \textbf{T}=v1+I⋅v2 на вектор v порождает сразу все четыре типа элементов алгебры:

Один оператор — четыре разных геометрических сущности. Чувствуете мощь?

Рисунок 4. Магия дуальности. Бивектор v2∧v (голубая плоскость) с помощью операции дуальности I(…)превращается в новый вектор, ортогональный этой плоскости. Это показывает, как мнимая часть отвечает за построение нормалей.
Рисунок 4. Магия дуальности. Бивектор v2∧v (голубая плоскость) с помощью операции дуальности I(…)превращается в новый вектор, ортогональный этой плоскости. Это показывает, как мнимая часть отвечает за построение нормалей.

Шаг 4: Реконструкция — как из двух векторов рождается целая вселенная

Теперь давайте погрузимся глубже и докажем, что эта система не просто красива, но и жестко определена.

Именно здесь и кроется самая элегантная идея. Мы покажем, что, зная лишь "осколки" — результаты преобразования — мы можем однозначно восстановить всю систему целиком.

Часть I: Введение мультивектора А в общем виде

Прежде всего, давайте запишем наш мультивектор A в самом общем виде. Любой мультивектор A можно разложить на "реальную" и "мнимую" кватернионные части:

A=(скаляр_1+бивектор_1)+I⋅(скаляр_2+бивектор_2)

Обозначим эти части как S1,v1′ и S2,v2′.

Давайте будем следовать этой логике. Пусть:

  • S_1 — скалярная часть.

  • B_1 — бивекторная часть.

  • IS_2 — псевдоскалярная часть.

  • IB_2 — векторная часть (дуальная бивектору B2).

Тогда наш мультивектор A — это просто их сумма:

A=S_1+B_1+IS_2+IB_2

Теперь мы хотим доказать, что этот A в точности равен \textbf{T}^*\hat{v}.

Рисунок 5. Реконструкция исходной системы. Зная результирующие векторы V′1 и V′2, лежащие в плоскости, ортогональной исходному вектору v, мы можем однозначно восстановить направление v с помощью их векторного произведения. Это доказывает геометрическую замкнутость и самосогласованность всей конструкции.
Рисунок 5. Реконструкция исходной системы. Зная результирующие векторы V′1 и V′2, лежащие в плоскости, ортогональной исходному вектору v, мы можем однозначно восстановить направление v с помощью их векторного произведения. Это доказывает геометрическую замкнутость и самосогласованность всей конструкции.

Часть II: Восстановление исходной системы

Предположим, мы не знаем исходный "пробный" вектор v, но знаем результаты его преобразования: бивекторы B1 и B2, которые породил наш оператор.

  • Бивектор B1=v1∧v представляет плоскость, содержащую v1 и v.

  • Бивектор B2=v2∧v представляет плоскость, содержащую v2 и v.

В 3D каждый бивектор имеет дуальный вектор, который ему ортогонален. Давайте назовем их V′1 и V′2:

  • V′_1=−I(v_1∧v)=v_1×v

  • V′_2=−I(v_2∧v)=v_2×v

Как нам найти направление v?

Вектор V′1 по определению ортогонален и v1, и v. Аналогично, V′2 ортогонален и v2, и v.

Это значит, что оба вектора, V′1 и V′2, лежат в плоскости, ортогональной вектору v.

А векторное произведение двух векторов, лежащих в одной плоскости, дает вектор, ортогональный этой плоскости. Следовательно:

V′_1×V′_2параллелен v

Чтобы получить единичный вектор \hat{v}, нам остается только нормализовать результат:

\hat{v}=\frac{V′_1×V′_2}{|V′_1×V′_2|}

Это доказывает, что система геометрически замкнута. Если мы знаем, как оператор подействовал на вектор, мы можем однозначно восстановить направление этого вектора. Геометрия не разваливается.

Часть III: Получение главной формулы сведения к (1)

A=((S_1+IB_1)v^{−1}−(IS_2−IB_2)v^{−1})v (2)

Что здесь происходит? Это просто хитрая алгебраическая перегруппировка. Давайте сначала посмотрим на выражение в скобках. Для любого вектора v в Cl(3,0) его обратный элемент

  v^{−1}=\frac{v}{v^2}=\frac{v}{|v|^2}

Если v единичный, тогда

 \hat{v}^{−1}=\hat{v}.

Умножение на \hat{v}^{−1} справа — это способ "извлечь" оператор преобразования. Если \textbf{A}=\textbf{T}^*\hat{v}, тогда \textbf{T}^*=\textbf{A}\hat{v}^{−1}

Давайте применим это к нашему разложению A на четыре части:

A=(v_1⋅v)+I(v_2∧v)+(v_1∧v)+I(v_2⋅v)

Сгруппируем их по-другому:

Теперь вспомним, что:

  • Первая скобка — это просто v_1v.

  • Вторая скобка — это I(v_2v).

Следовательно,

\textbf{A}=v_1v+\textbf{I}v_2v=(v1+\textbf{I}v_2)v=\textbf{T}v

А для сопряженного оператора, как в исходной формуле (1), все будет аналогично:

\textbf{A}=(v_1−\textbf{I}v_2)v=\textbf{T}^{*}v

Формула показывает, что если мы возьмем полный мультивектор A, "разделим" его на v (умножив на v^{−1}), чтобы получить оператор, а затем снова "соберем" (умножив на v), то мы, естественно, вернемся к исходному A.

К этому моменту у вас наверное должен был закрасться вопрос : "А зачем нам сопряженный оператор?". Ответ прост - он необходим для согласованности с матрицей Грамма, одним из базовых понятий линейной алгебры. Именно за счет умножения на эрмитово-сопряженный элемент, в частном случае мы получаем модуль кватерниона. А эрмитово-сопряженный к вектору равен самому вектору, поэтому для определения модуля вектора, как правило, про необходимость этой операции "забывают".

Это может показаться тавтологией, но все это доказывает самосогласованность: представление мультивектора A через оператор T и его действие на вектор v — это не приближение и не аналогия, а точное и обратимое математическое тождество.

А теперь давайте сгруппируем члены по их рангу (или "типу"):

  • Ранг 0 (Скаляр): ⟨A⟩_0=v_1⋅v

  • Ранг 1 (Вектор): ⟨A⟩_1=I(v_2∧v)

  • Ранг 2 (Бивектор): ⟨A⟩_2=v_1∧v

  • Ранг 3 (Псевдоскаляр): ⟨A⟩_3=I(v_2⋅v)

Вот оно!

Итак, мультивектор A — это сумма четырех геометрически осмысленных частей, каждая из которых рождается из взаимодействия векторов v_1 и v_2 с вектором v, выступающим в роли "холста".

A=⟨A⟩_0+⟨A⟩_1+⟨A⟩_2+⟨A⟩_3

Это и есть тот самый "универсальный солдат": один объект, хранящий в себе сразу четыре типа геометрической информации.

___________________________________________________________

Шаг 5: Универсальный солдат — почему это обобщение всего?

Теперь мы готовы понять, почему этот подход так крут. Он не просто описывает что-то одно, он содержит в себе всё. Полный базис алгебры Cl(3,0) состоит из 2^3=8 элементов:

  • 1 (один скаляр)

  • \textbf{e}_1,\textbf{e}_2,\textbf{e}_3 (три вектора)

  • \textbf{e}_1\textbf{e}_2,\textbf{e}_2\textbf{e}_3,\textbf{e}_3\textbf{e}_1 (три бивектора)

  • \textbf{I}=\textbf{e}_1\textbf{e}_2\textbf{e}_3 (один псевдоскаляр)

Любой элемент алгебры A (его называют мультивектором) — это просто сумма этих базовых элементов с какими-то коэффициентами.

\textbf{A}=s+v_1\textbf{e}_1+v_2\textbf{e}_2+v_3\textbf{e}_3+b_1\textbf{e}_1\textbf{e}_2+…+p\textbf{I}

Вместо того чтобы таскать за собой восемь коэффициентов, мы представляем A через его геометрическое действие. Это и есть фундаментальный сдвиг в мышлении. Мы не спрашиваем "из чего он состоит?", мы спрашиваем "что он делает?".

А вот из чего, собственно, состоит этот универсальный элемент.

Рисунок 6. Отдельные части элемента Клиффорда
Рисунок 6. Отдельные части элемента Клиффорда

Уберем с рисунка вспомогательные построения и добавим комплексные скалярную и векторную части.

До построения осталось совсем немного...
До построения осталось совсем немного...

A = Q1 + 1i·Q2 = S + V = элемент Клиффорда, который кодирует октаэдр.
В общем случае октаэдр неправильной формы.

Рисунок 7. Финальное построение
Рисунок 7. Финальное построение

__________________________________________________________________________

Шаг 6: Частные случаи — Зоопарк математики в одном вольере

Давайте посмотрим, как из нашего общего мультивектора A получить все те инструменты, к которым мы так привыкли.

Где здесь кватернионы?

Кватернионы — это элементы, состоящие из скалярной и бивекторной частей. В нашей алгебре они образуют так называемую "четную подалгебру" — если перемножить два таких элемента, результат снова будет кватернионом. Если мы хотим, чтобы наш A был чисто кватернионным, мы просто обнуляем его векторную и псевдоскалярную части. Таким образом, кватернионы - это частный случай нашего оператора при v_2=0.

Например, ротор R=cos(θ/2)−\textbf{B}sin(θ/2) — это кватернион, который вращает объекты вокруг оси бивектора B (нормали к B) на угол θ.

Где здесь спиноры?

Это самый тонкий момент. В стандартной физике спинор (например, описывающий электрон) — это нечто странное, что при повороте на 360° меняет знак. В алгебре Клиффорда спиноры — это элементы специального "отфильтрованного" подпространства.

Чтобы его получить, всю алгебру умножают на проектор P (элемент, для которого \textbf{P}^2=\textbf{P}. Например, в физике используют \textbf{P}=\frac{1}{2}(1+\textbf{e}_3). Это как надеть специальные очки, которые позволяют видеть только часть мира.

Наш подход более общий. Мы работаем с полным элементом A. Нам не нужны "очки". Если нам понадобится спинор, мы просто возьмем наш A и умножим его на проектор P. Мы не теряем информацию, мы просто выбираем, на что смотреть.

Где здесь комплексные числа? Элемент вида \textbf{A}=s+p⋅\textbf{I} (сумма скаляра и псевдоскаляра) ведет себя в точности как комплексное число, где роль мнимой единицы i играет псевдоскаляр I. Мы можем это легко проверить: \textbf{I}^2=(\textbf{e}_1\textbf{e}_2\textbf{e}_3)^2=−1.

Если положить v_1и v_2 параллельными v, мы можем получить те самые элементы вида s+ip, которые ведут себя как комплексные числа.

Где здесь векторы?

Если мы хотим, чтобы наш элемент A был просто вектором, нам нужно подобрать v_1 и v_2 так, чтобы после умножения на v остались только векторные компоненты. А именно надо сделать v_1=0, v_2ортогональным v.

Таким образом, наш общий мультивектор A — это "материнская" структура, из которой все остальные объекты получаются как частные случаи или проекции.

Рисунок 6. Сила унификации. Вместо цепочки матричных операций (масштабирование, вращение, смещение), вся сложная трансформация объекта может быть элегантно описана одной-единственной операцией с мультивектором A.
Рисунок 6. Сила унификации. Вместо цепочки матричных операций (масштабирование, вращение, смещение), вся сложная трансформация объекта может быть элегантно описана одной-единственной операцией с мультивектором A.

Заключение: Зачем все это нужно?

Эта красивая теория — не просто гимнастика для ума. Она имеет глубокие практические следствия.

  1. Для 3D-графики и разработки игр: Представьте, что вместо отдельных классов для Vector3QuaternionMatrix4x4 у вас есть один-единственный объект Multivector. Вращения, отражения, масштабирования, определение положений — все это делается через одно унифицированное геометрическое произведение. Код становится чище, интуитивнее и потенциально быстрее. Библиотеки вроде ganja.js уже показывают, как это может выглядеть.

  2. Для физики и робототехники: Алгебра Клиффорда позволяет записывать уравнения электромагнетизма, механики и даже квантовой теории в невероятно компактной и элегантной форме, свободной от координат. Она напрямую кодирует геометрию, а не ее проекции на оси X, Y, Z.

  3. Для понимания: Самое главное — это дает интуицию. За сложными формулами вращений и преобразований скрывается простая геометрия проекций и плоскостей.

Таким образом, мы обнаружили новый мощный способ мышления:

  1. Любой элемент алгебры Клиффорда Cl(3,0) можно представить как оператор T=v1+iv2, действующий на базовый единичный вектор.

  2. Этот оператор имеет "реальную" часть v1, которая отвечает за кватернионные преобразования (проекции и вращения), и "мнимую" часть iv2, которая отвечает за преобразования, связанные с дуальностью (создание псевдоскаляров и векторов из бивекторов).

  3. Этот подход объединяет все математические сущности (векторы, кватернионы, спиноры) в единой структуре полного мультивектора, показывая, что они являются лишь разными проявлениями одного и того же геометрического объекта.

Здесь мы увидели ключ к двери в мир, где геометрия и алгебра — это одно и то же. Мир, где один объект может быть всем, что нам нужно. И, возможно, это самый элегантный способ думать о геометрии из всех, что мы когда-либо изобретали.

Надеюсь, это путешествие было для вас таким же захватывающим, как и для меня. Спасибо за внимание


Другие наши статьи на тему геометрической алгебры:

@master_program:

Давайте забудем всё про скалярное и векторное. Есть способ гораздо лучше - великолепная статься для введения читателя в смыслы геометрической алгебры. Где подробно описан смысл геометрического произведения и удобства от такого описания.

Вывод ОТО в геометрической алгебре - кейс практического применения этого математического аппарата, к теории относительности.

О формализме матриц Паули и геометрической алгебры в нерелятивистской квантовой механике - статья расшифровывающая смысл формализма квантовой механики, устраняющая смысловой разрыв между геометрией и свойствами ее элементов с формулами высокой физики.

@Exlt8

Кватернионы — не только то, что мы о них думали - статья про то как на плоскости можно напрямую проассоциировать скаляр и бивектор с обычными векторами, чтобы использовать для математического описания плоскости двойной базис. Про развитие той идеи вы прочитали здесь.

Функция гиперкомплексного переменного и UVWT базис Клиффорда-Паули - о том как представить функцию от любого элемента Клиффорда, напрямую без применения разложений в ряды от матриц.