Продолжаю серию статей, в которой даётся мягкое и последовательное введение в принципы построения геометрических алгебр (Клиффорда). Начало серии и оглавление вы можете найти здесь.

Внешняя алгебра, рассмотренная в предыдущей части, позволила нам получить алгебраическую модель нормированного аффинного векторного пространства \mathbf{R}^n . Базовые элементы этой алгебры представляют линейные подпространства и их линейные комбинации, а алгебраические операции позволяют вычислять внешнее произведение пространств, их пересечения, ортогональные дополнения и определяют норму подпространств.

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

Есть достаточно простой способ превратить аффинную геометрию в гораздо более содержательную проективную геометрию. Для этого надо добавить одно дополнительное измерение, а потом рассмотреть пересечение аффинного пространства с произвольной гиперплоскостью, не проходящей через общую точку.

На иллюстрации показано каким образом на проективной плоскости (бежевой) строятся точка A и прямая l как пересечения с ней аффинных прямой OA и плоскости Ol, показанных в синих тонах.

Я не буду сейчас глубоко входить в изложение принципов построения проективной геометрии. Для нас сейчас главное то, что пересекая проективную плоскость, различные аффинные прямые превращаются в различные точки, аффинные плоскости — в прямые и так далее. И вот эти-то точки и прямые могут уже оказаться в любом месте проективной плоскости. Таким образом, от аффинной геометрии на пространстве \mathbf{R}^{n+1} мы можем перейти к геометрии на проективной плоскости \mathbf{PR}^{n}, которая не только включает в себя «школьную» евклидову геометрию, но и добавляет к ней новые инструменты, в частности, ещё один непривычный класс объектов — идеальные точки, прямые, плоскости и т.п. Им соответствуют аффинные прямые, плоскости и любые другие подпространства параллельные проективной плоскости. В евклидовой геометрии таких объектов нет, тогда как в проективной геометрической алгебре, они составляют самостоятельную подгеометрию и существенно расширяют наши возможности.

Построение геометрической алгебры состоит в определении соответствия между элементами геометрического пространства, которые задаются координатами, уравнениями или как-то ещё, и элементами алгебры Клиффорда, то есть мультивекторами. Так мы сможем «переводить» задачи с «координатного» языка геометрии на «бескоординатный» язык алгебры и обратно. Алгебраические операции, такие как внешнее или регрессивное произведение, тоже получают геометрическую интерпретацию, позволяя выражать операции и отношения между геометрическими объектами, такие как пересечение, принадлежность, проекции и др.

В качестве примера, сегодня мы рассмотрим как строятся двумерная и трёхмерная проективные геометрические алгебры PEA2 и PEA3 на базе внешних алгебр Cl_{0,0,3} и Cl_{0,0,4}.

Двумерная проективная внешняя алгебра (PEA2)

Проективно-дополнительный базис

Внешняя алгебра Cl_{0,0,3} строится как расширение поля вещественных чисел тремя генераторами \mathbf{e}_0,\mathbf{e}_1, \mathbf{e}_2. Все они при возведении в квадрат превращаются в ноль, и образуют семь невещественных базисных элементов: \{\mathbf{e}_0, \mathbf{e}_1,\mathbf{e}_2, \mathbf{e}_{01}, \mathbf{e}_{02}, \mathbf{e}_{12},\mathbf{e}_{012}\}, квадрат которых также равен нулю. Если мы поставим генераторам \mathbf{e}_1 и \mathbf{e}_2 в соответствие декартовы оси Ox и Oy, то их внешнее произведение — бивектор \mathbf{e}_{1}\wedge\mathbf{e}_{2} = \mathbf{e}_{12} будет представлять плоскость XY. Дополнением к этой плоскости будет ось Oz, которую представляет элемент алгебры \mathbf{e}_0, образующий с генераторами \mathbf{e}_1 и \mathbf{e}_2 привычную нам правую тройку.

Мы вольны представлять базис алгебры через её элементы и их дополнения так, как нам угодно. Поскольку проективная плоскость не содержит компоненты \mathbf{e}_0, все базисные элементы, содержащие индекс 0 принадлежат к пространству, дополнительному к проективному. Это можно выразить явно, используя левое дополнение и введя явные обозначения x и y для индексов 1 и 2:

\begin{array}{l|l} \text{Проективное пр-во} & \text{Дополнительное пр-во} \\\hline \mathbf{e}_x = \mathbf{e}_1 & \underline{\mathbf{e}_x} = -\mathbf{e}_{02}\\ \mathbf{e}_y = \mathbf{e}_2 & \underline{\mathbf{e}_y} = \mathbf{e}_{01}\\ \mathbf{e}_{xy} = \mathbf{e}_{12} & \underline{\mathbf{e}_{xy}} = \mathbf{e}_{0}\\ \end{array}

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

Элементы геометрической алгебры

Как обсуждалось в прошлой части, в аффинной алгебре однородные мультивекторы представляют линейные подпространства. В ней 1-вектор будет соответствовать прямой, проходящей через начало координат, а 2-вектор — плоскости, также содержащей начало координат. Их пересечения с проективной плоскостью будут, соответственно, образовывать точки и прямые линии. Произвольный 1-вектор a \mathbf{e}_1 + b \mathbf{e}_2 + c  \mathbf{e}_0, соответствет точке с однородными координатами (a:b:c), которая в проективной плоскости будет иметь декартовы координаты (a/c, b/c). Произвольный 2-вектор (1-антивектор) a \mathbf{e}_{01} + b \mathbf{e}_{02} + c \mathbf{e}_{12} в аффинном пространстве представляет плоскость с нормальным вектором, имеющим координаты (a,b,c). Пересечением этой плоскости с проективной плоскостью будет прямая, описываемая уравнением в декартовых координатах проективной плоскости: b x -a y = c.

В проективно-дополнительном базисе соответствие между однородными мультивекторами и геометрическими объектами в проективной плоскости становится симметричным и более явным:

  • Точку, заданную координатами (p_x, p_y), представляет вектор

p_x \mathbf{e}_x + p_y \mathbf{e}_y + \underline{\mathbf{e}_{xy}}.
  • Прямую, заданную ортогональным к ней единичным вектором \mathbf{n} = (n_x, n_y) и расстоянием m от прямой до центра координат, описывает уравнение n_xx+n_yy + m = 0 и представляет антивектор

\underline{n_x \mathbf{e}_x + n_y \mathbf{e}_y} + m \mathbf{e}_{xy}.
  • Псевдоскаляр \underline{\mathbf{1}} представляет всю проективную плоскость.

Как видно, геометрическая размерность подпространства и ранг соответствующего мультивектора связаны простым соотношением:

\mathrm{dim}(x) = \mathrm{gr}(x)-1.

Базовые операции

Вот как выглядят в проективно-дополнительном базисе таблицы для внешнего и регрессивного произведений:

\begin{array}{c|cccc|cccc} \wedge & \mathbf{1} & \mathbf{e}_{x} & \mathbf{e}_{y} & \mathbf{e}_{xy} & \underline{\mathbf{1}} & \underline{\mathbf{e}_{x}} & \underline{\mathbf{e}_{y}} & \underline{\mathbf{e}_{xy}} \\\hline \mathbf{1} & \mathbf{1} & \mathbf{e}_{x} & \mathbf{e}_{y} & \mathbf{e}_{xy} & \underline{\mathbf{1}} & \underline{\mathbf{e}_{x}} & \underline{\mathbf{e}_{y}} & \underline{\mathbf{e}_{xy}} \\ \mathbf{e}_{x} & \mathbf{e}_{x} & 0 & \mathbf{e}_{xy} & 0 & 0 & \underline{\mathbf{1}} & 0 & \underline{\mathbf{e}_{y}} \\ \mathbf{e}_{y} & \mathbf{e}_{y} & -\mathbf{e}_{xy} & 0 & 0 & 0 & 0 & \underline{\mathbf{1}} & -\underline{\mathbf{e}_{x}} \\ \mathbf{e}_{xy} & \mathbf{e}_{xy} & 0 & 0 & 0 & 0 & 0 & 0 & \underline{\mathbf{1}} \\\hline \underline{\mathbf{1}} & \underline{\mathbf{1}} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \underline{\mathbf{e}_{x}} & \underline{\mathbf{e}_{x}} & \underline{\mathbf{1}} & 0 & 0 & 0 & 0 & 0 & 0 \\ \underline{\mathbf{e}_{y}} & \underline{\mathbf{e}_{y}} & 0 & \underline{\mathbf{1}} & 0 & 0 & 0 & 0 & 0 \\ \underline{\mathbf{e}_{xy}} & \underline{\mathbf{e}_{xy}} & \underline{\mathbf{e}_{y}} & -\underline{\mathbf{e}_{x}} & \underline{\mathbf{1}} & 0 & 0 & 0 & 0 \end{array}\begin{array}{c|cccc|cccc} \vee & \mathbf{1} & \mathbf{e}_{x} & \mathbf{e}_{y} & \mathbf{e}_{xy} & \underline{\mathbf{1}} & \underline{\mathbf{e}_{x}} & \underline{\mathbf{e}_{y}} & \underline{\mathbf{e}_{xy}} \\\hline  \mathbf{1} & 0 & 0 & 0 & 0 & \mathbf{1} & 0 & 0 & 0 \\ \mathbf{e}_{x} & 0 & 0 & 0 & 0 & \mathbf{e}_{x} & \mathbf{1} & 0 & 0 \\ \mathbf{e}_{y} & 0 & 0 & 0 & 0 & \mathbf{e}_{y} & 0 & \mathbf{1} & 0 \\ \mathbf{e}_{xy} & 0 & 0 & 0 & 0 & \mathbf{e}_{xy} & \mathbf{e}_{y} & -\mathbf{e}_{x} & \mathbf{1} \\\hline \underline{\mathbf{1}} & \mathbf{1} & \mathbf{e}_{x} & \mathbf{e}_{y} & \mathbf{e}_{xy} & \underline{\mathbf{1}} & \underline{\mathbf{e}_{x}} & \underline{\mathbf{e}_{y}} & \underline{\mathbf{e}_{xy}} \\ \underline{\mathbf{e}_{x}} & 0 & \mathbf{1} & 0 & -\mathbf{e}_{y} & \underline{\mathbf{e}_{x}} & 0 & \underline{\mathbf{e}_{xy}} & 0 \\ \underline{\mathbf{e}_{y}} & 0 & 0 & \mathbf{1} & \mathbf{e}_{x} & \underline{\mathbf{e}_{y}} & -\underline{\mathbf{e}_{xy}} & 0 & 0 \\ \underline{\mathbf{e}_{xy}} & 0 & 0 & 0 & \mathbf{1} & \underline{\mathbf{e}_{xy}} & 0 & 0 & 0 \end{array}

В контексте геометрической алгебры внешнее произведение называется операцией соединения (join), а регрессивное произведение — пересечением (meet).

В трёхмерной аффинной геометрической алгебре внешнее произведение двух подпространств размерности m и k строит их объединение, то есть, подпространство размерности m + k, включающее в себя оба множителя. При переходе к проективной геометрии, это свойство сохраняется, с поправкой на то, что переход в проективную плоскость понижает размерность объектов на единицу. Это значит, что точка, имеющая геометрическую размерность 0, при внешнем произведении с каким-либо объектом, повышает размерность результата на единицу.

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

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

Однородная линейная комбинация мультивекторов, представляющих точки или прямые, тоже имеет геометрический смысл: A + xB — точка, делящая отрезок AB, в пропорции 1:x; a + xb — прямая, делящая угол \angle ab в пропорции 1:x.

Наконец, точки и прямые в PGA2 являются взаимно-двойственными объектами, и операция дополнения превращает точку a \mathbf{e}_x + b \mathbf{e}_y + c\,\underline{\mathbf{e}_{xy}} в прямую \underline{a \mathbf{e}_x + b \mathbf{e}_y} + c\,\mathbf{e}_{xy} и наоборот.

* * *

В качестве демонстрации алгебраического подхода к геометрическим задачам давайте чисто алгебраическими методами докажем теорему Дезарга — одну из ключевых теорем проективной геометрии:

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

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

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

1. Рассмотрим треугольник \Delta abc, образованный тремя прямыми и проективную ось — прямую p.

-11

2. Построим второй треугольник, с помощью линейных комбинаций сторон треугольника с осью p:

\begin{eqnarray*}a' = a + xp,\\b' = b + yp,\\c' = c + zp.\end{eqnarray*}

Здесь числа xy и z — произвольны. Такие линейные комбинации гарантируют, что новые линии будут иметь с продолжениями сторон треугольника и осью проекции общие точки. Таким образом, мы имеем самый общий случай, описанный в постановке теоремы.

Новые прямые обозначены зелёным цветом.
Новые прямые обозначены зелёным цветом.

Теорема утверждает, что прямые, соединяющие соответствующие вершины треугольников, должны иметь общую точку. Эти прямые можно вычислить, упрощая выражения:

\begin{eqnarray*} &&(a \vee b) \wedge (a' \vee b') = \\ &=& (a \vee b) \wedge ((a + xp) \vee (b + yp)) = \\ &=& (a \vee b) \wedge (a \vee b + (ya+xb)\vee p) = \\ &=& (a \vee b) \wedge (ya \vee p + xb \vee p) = ya - xb\\[1.5ex] && (a \vee b) \wedge (a' \vee b') = zb - yc\\[1.5ex] && (c \vee a) \wedge (c' \vee c') = xc - za \end{eqnarray*}

Осталось доказать, что эти три прямые проходят через одну точку:

\begin{eqnarray*}&&(ya-xb)\vee(zb-yc) = za\vee b + xb\vee c + yc\vee a,\\&&(ya-xb)\vee(xc-za) = za\vee b + xb\vee c + yc\vee a. \end{eqnarray*}

Выражение для точки пересечения не зависит от прямой p и одинаково для всех прямых, соединяющих вершины треугольников. Что и требовалось доказать. Вот чертёж, иллюстрирующий результат:

-16
-16

Обратное утверждение двойственно уже доказанному, и поэтому верно.

Код чертежа
desargues = 
  chart @(PEA 2) $ do
    -- стороны треугольника, как нормированные 1-векторы
    a <- kvec 2 [-15,1,5]   @ [stroke_ "blue", id_"a"]
    b <- kvec 2 [-6,2,1]    @ [stroke_ "blue", id_"b"]
    c <- kvec 2 [20,3,-1]   @ [stroke_ "blue", id_"c"]
    polygon [a, b, c]      <@ [fill_ "wheat"]
    -- ось проекции, как 1-вектор
    p <- kvec 2 [1,1.5,-10] @ [stroke_width_ "2", id_"p"]
    -- спроецированный треугольник
    let (x,y,z) = (2.5,1,-2)
    a' <- a + x*p           @ [stroke_ "green", id_"a'"]
    b' <- b + y*p           @ [stroke_ "green", id_"b'"]
    c' <- c + z*p           @ [stroke_ "green", id_"c'"]
    polygon [a', b', c']   <@ [fill_ "pink"]
    -- линии, соединяющие вершины двух треугольников
    y*a - x*b               @ [stroke_dasharray_ "8 4"]
    z*b - y*c               @ [stroke_dasharray_ "8 4"]
    x*c - z*a               @ [stroke_dasharray_ "8 4"]
    -- точка их пересечения
    z*a ∨ b + x*b ∨ c + y*c ∨ a   @ [id_ "P"]
    return ()

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

Трёхмерная проективная внешняя алгебра (PEA3)

Трёхмерная проективная внешняя алгебра PEA3 строится на базе алгебры Cl_{0,0,4}. Проективным в этом случае будет трёхмерное пространство, вложенное в четырёхмерное. Если генератору \mathbf{e}_0 поставить в соответствие ось, дополнительную проективному пространству, то используя проективно-дополнительный базис, можно записать базовые компоненты алгебры, сделав нулевую компоненту неявной:

\begin{array}{l|l} \text{Проективное пр-во} & \text{Дополнительное пр-во} \\\hline \mathbf{e}_x = \mathbf{e}_1 & \underline{\mathbf{e}_x} = \mathbf{e}_{023}\\ \mathbf{e}_y = \mathbf{e}_2 & \underline{\mathbf{e}_y} = -\mathbf{e}_{013}\\ \mathbf{e}_z = \mathbf{e}_3 & \underline{\mathbf{e}_z} = \mathbf{e}_{012}\\ \mathbf{e}_{xy} = \mathbf{e}_{12} & \underline{\mathbf{e}_{xy}} = \mathbf{e}_{03}\\ \mathbf{e}_{zx} = -\mathbf{e}_{13} & \underline{\mathbf{e}_{zx}} = -\mathbf{e}_{02}\\ \mathbf{e}_{yz} = \mathbf{e}_{23} & \underline{\mathbf{e}_{yz}} = \mathbf{e}_{01}\\ \mathbf{e}_{xyz} = \mathbf{e}_{123} & \underline{\mathbf{e}_{xyz}} = \mathbf{e}_{0} \end{array}

Элементы трёхмерного проективного пространства представляются в PEA3 таким образом:

  • Точка с координатами (p_x, p_y, p_z) представляется 1-вектором

p_x\mathbf{e}_x + p_y\mathbf{e}_y + p_z\mathbf{e}_z + \underline{\mathbf{e}_{xyz}}.
  • Прямую в 3D можно задать двумя векторами: моментом и направлением. Первый вектор \mathbf{m} = (m_x,m_y,m_z) определяет плоскость, в которой лежит прямая, а второй \mathbf{v} = (v_x,v_y,v_z) фиксирует направление прямой в этой плоскости. В геометрической алгебре такая прямая задаётся бивектором:

m_x \mathbf{e}_{yz} + m_y\mathbf{e}_{zx} + m_z \mathbf{e}_{xy} + \underline{v_x \mathbf{e}_{yz} + v_y\mathbf{e}_{zx} + v_z\mathbf{e}_{xy}}.
Параметризация прямой в пространстве. Здесь  — это кратчайшее расстояние от прямой до начала координат.
Параметризация прямой в пространстве. Здесь d — это кратчайшее расстояние от прямой до начала координат.
  • Плоскость, заданную нормальным единичным вектором \mathbf{n} = (n_x, n_y, n_z) и множителем m, который определяет расстояние от плоскости до центра координат, описывает уравнение n_x x + n_y y + n_z z  + m = 0 и представляет 1-антивектор:

\underline{n_x\mathbf{e}_x + n_y\mathbf{e}_y + n_z\mathbf{e}_z} + m \mathbf{e}_{xyz}.
  • Псевдоскаляр \underline{\mathbf{1}} представляет всё проективное пространство.

Операция дополнения превращает точки в плоскости и наоборот, а прямые дополнительны другим прямым, у которых векторы момента и направления меняются местами.

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

Пересечением (регрессивным произведением) двух плоскостей всегда будет некоторая прямая, а пересечение с точкой всегда равно нулю. Также не вызывает вопросов результат пересечения прямой и плоскости — это всегда какая-то точка. А вот пересечение двух прямых имеет особую геометрическую интерпретацию. В зависимости от того лежат ли прямые в одной плоскости или нет, их регрессивное произведение равно либо скаляру, либо нулю. Знак скаляра отражает ориентацию пары прямых, как хирального объекта, то есть объекта не совпадающего с собой при зеркальном отражении:

Зависимость пересечения двух прямых от их взаимной ориентации.
Зависимость пересечения двух прямых от их взаимной ориентации.

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

* * *

Вернёмся к теореме Дезарга. В трёхмерном пространстве её доказательство буквально сводится к одному только построению.

Выберем точку P и три различные прямые A, B и C, проходящие через неё. Построим две плоскости, пересекающиеся в некоторой прямой p, не проходящей через точку P. Точки пересечения прямых A, B и C с этими плоскостями образуют два треугольника, для которых точка P является точкой перспективы. В свою очередь, продолжения сторон этих треугольников (a, b, c и a', b', c', соответственно) по построению лежат в упомянутых выше плоскостях, прямая p является их осью перспективы, таким образом, все эти точки пересечения соответствующих сторон лежат на прямой p. Проекция этого построения на какую-либо плоскость приводит нас к теореме Дезарга.

Медитируя на все эти линии, можно внезапно понять, что теорема Дезарга очевидна.
Медитируя на все эти линии, можно внезапно понять, что теорема Дезарга очевидна.
Код чертежа
desargues3D =  runAnimation "desargues.gif" $
  animate 80 (0, 2*pi) $ \a ->
  chart $ 
  viewFrom @(PGA 3) @(PGA 2) [0,1000,2000] $
  mapSpace (rotateAt (vect [0,1]) a) $
  do
    -- проективные точка и прямая
    _P <- point [-1,20]                  @ [id_ "P"]
    p <- line [1,0,10] [-1,0,10]         @ [id_ "p"]

    -- секущие плоскости
    pA <- p ∧ point [0,5]                @ []
    pB <- p ∧ point [0,-5]               @ []
    plane_lp p (point [0,5])  (5,20)    <@ [fill_ "wheat", opacity_ "0.5"]
    plane_lp p (point [0,-5]) (5,20)    <@ [fill_ "blue", opacity_ "0.5"]

    -- дезарговские треугольники и их стороны 
    p1 <- _P ∧ point [8,0,0]             @ [id_ "A", stroke_dasharray_ "8 4"]
    p2 <- _P ∧ point [0,0,8]             @ [id_ "B", stroke_dasharray_ "8 4"]
    p3 <- _P ∧ point [0,0,-6]            @ [id_ "C", stroke_dasharray_ "8 4"]
    (pA ∨ p1) ∧(pA ∨ p2)                 @ [id_ "a", stroke_ "blue"]
    (pA ∨ p2) ∧(pA ∨ p3)                 @ [id_ "b", stroke_ "blue"]
    (pA ∨ p3) ∧(pA ∨ p1)                 @ [id_ "c", stroke_ "blue"]
    (pB ∨ p1) ∧(pB ∨ p2)                 @ [id_ "a'", stroke_ "green"]
    (pB ∨ p2) ∧(pB ∨ p3)                 @ [id_ "b'", stroke_ "green"]
    (pB ∨ p3) ∧(pB ∨ p1)                 @ [id_ "c'", stroke_ "green"]
    polygon [pA ∨ p1, pA ∨ p2, pA ∨ p3] <@ [fill_ "wheat"]
    polygon [pB ∨ p1, pB ∨ p2, pB ∨ p3] <@ [fill_ "lightblue"]
    return ()

Здесь я использовал не внешнюю алгебру PEA 3, а геометрическую PGA 3, поскольку планировал вращение трёхмерной картинки, а вращение во внешних алгебрах не определено. Однако все использованные операции внешние.

Геометрические числа

Все приведённые выше представления подпространств мультивекторами в алгебрах PEA2 и PEA3 содержат две части: позиционную — принадлежащую проективному пространству, и направленную — принадлежащую пространству, дополнительному проективному. Эрик Ленгэль называет их «bulk components» и «weight components», соответственно, но поскольку на русский язык эти термины перевести с сохранением смысла непросто (bulk — объёмный, общий, валовой?; weight — весовой?), поэтому я продолжу называть эти компоненты позиционной и направленной. Следуя Ленгэлю, введём для объекта x обозначение его позиционной части x_\bullet и направленной части — x_\circ. Например, для прямой a в PEA3:

a = \overbrace{m_x \mathbf{e}_{yz} + m_y\mathbf{e}_{zx} + m_z \mathbf{e}_{xy} }^{a_\bullet}+ \overbrace{\underline{v_x \mathbf{e}_{yz} + v_y\mathbf{e}_{zx} + v_z\mathbf{e}_{xy}}}^{a_\circ} = a_\bullet + a_\circ.

Позиционная часть отвечает за положение объекта в проективном пространстве (координаты точки, смещения прямой или плоскости относительно начала координат). Направленная часть отвечает за направление прямых или плоскостей.

Точка однозначно задаётся своей позицией и не требует каких-то ещё параметров. Однако произвольный 1-вектор, определяющий точку, кроме позиционной, имеет одну направленную компоненту. Поскольку точка направления не имеет, масштабированием (умножением на скаляр) мы можем сделать направленную компоненту точки равной единице (если она есть). Масштабирование не смещает точку в проективном пространстве, а лишь изменяет её меру, поэтому с геометрической точки зрения, в которой точка «объект, не имеющий частей», все масштабированные точки эквивалентны. Мультивекторы с единичной направленной компонентой мы будем называть нормированными.

Прямую на плоскости определяют уже три параметра: два задают направление, а третье — расстояние от прямой до начала координат. Поскольку масштабирование не изменяет уравнения прямой, и геометрически, все масштабированные 1-антивекторы представляют эквивалентные прямые, то подобно точкам, масштабированием можно привести прямую к нормированной форме, в которой направленная часть будет соответствовать единичному вектору \mathbf{n} = (n_x, n_y), ортогональному прямой. В нормированном представлении коэффициент m в позиционной части будет равен расстоянию от прямой до начала координат.

Приведённые выше рассуждения справедливы в геометриях любых размерностей для точек и «анти-точек», то есть, для пространств, дополнительных точкам. А вот алгебраические представления прямых в 3D, как обычно, требуют более пристального внимания. Напомню, что линейные подпространства, которые являются элементами внешней геометрической алгебры, строятся из подпространств меньшей размерности с помощью операции соединения (внешнего произведения). При этом соединение «правильного» подпространства с самим собой должно давать в результате объект нулевой меры, то есть, объект\mathbf{0}. Для точек это выполняется автоматически, в чём легко убедиться, если аккуратно раскрыть скобки во внешнем произведении двух нормированных точек, представленных 1-векторами:

\begin{eqnarray} (p_x \mathbf{e}_x + p_y \mathbf{e}_y + p_z \mathbf{e}_z + \underline{\mathbf{e}_{xyz}}) ∧ (q_x \mathbf{e}_x + q_y \mathbf{e}_y + q_z \mathbf{e}_z + \underline{\mathbf{e}_{xyz}}) =\\ = (p_x q_y - p_y q_x) \mathbf{e}_{xy} + (p_x q_z - q_x p_z) \mathbf{e}_{zx} + (p_y q_z - q_y p_z) \mathbf{e}_{yz} +\, \\\ +\, \underline{ (p_z - q_z) \mathbf{e}_{xy} + (q_y - p_y) \mathbf{e}_{zx} + (p_x - q_x) \mathbf{e}_{yz}}. \end{eqnarray}

Если точки совпадают, то есть, если (p_x,p_y,p_z)=(q_x,q_y,q_z), то все коэффициенты в произведении будут равны нулю. В то же время, внешнее произведение произвольного 2-вектора с самим собой нулю быть не обязано. Вычислим такое произведение, помня, что для базисных элементов второго ранга \underline{b} \wedge b = b \wedge \underline{b} = \underline{\mathbf{1}}, и что внешнее произведение базисных элементов с совпадающими индексами равно нулю:

\begin{eqnarray}&&(m_x \mathbf{e}_{yz} + m_y\mathbf{e}_{zx} + m_z \mathbf{e}_{xy} + \underline{v_x \mathbf{e}_{yz} + v_y\mathbf{e}_{zx} + v_z\mathbf{e}_{xy}}) ~\wedge \\ \wedge~ &&(m_x \mathbf{e}_{yz} + m_y\mathbf{e}_{zx} + m_z \mathbf{e}_{xy} + \underline{v_x \mathbf{e}_{yz} + v_y\mathbf{e}_{zx} + v_z\mathbf{e}_{xy}}) = \\ = && 2(m_xv_x + m_y v_y + m_z v_z)\underline{\mathbf{1}} = 2(\mathbf{m}\cdot\mathbf{v})\underline{\mathbf{1}}.\end{eqnarray}

Результатом, как видим, является нетривиальный псевдовектор, который обращается в ноль только тогда, когда равно нулю скалярное произведение позиционной и направленной компонент прямой \mathbf{m} и \mathbf{v}, обозначенное точкой. Таким образом, ортогональность этих компонент эквивалентна условию корректности алгебраического представления прямой, как линейного подпространства.

В самой первой части этой серии статей о геометрических алгебрах я упоминал, что Клиффорд называл элементы таких алгебр геометрическими числами. Однако более аккуратно было бы называть геометрическими только те числа, то есть, элементы геометрической алгебры, которые корректно представляют геометрические объекты и их преобразования. Эрик Ленгэль назвал критерий корректности представления геометрическим условием (geometric constraint). Вслед за Клиффордом, мы можем использовать для элементов геометрической алгебры, удовлетворяющих геометрическому условию, термин геометрические числа. Во внешней алгебре геометрическими будут только те числа, для которых внешнее произведение с самим собой равно нулю. Так, например, скаляры, строго говоря, не являются геометрическими числами, тогда как псевдоскаляры — являются (это недоразумение исправится при переходе от внешних алгебр к геометрическим). Как мы видели, любые 1-векторы и 1-антивекторы, представляющие точки и анти-точки, геометричны, а геометрическое условие для 2-вектора, представляющего прямую состоит в ортогональности его позиционной и направленной компонент.

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

Продемонстрируем это свойство на примере представлений прямых в 3D. Через две различные точки проходит некоторая прямая, которую представляет нетривиальный 2-вектор. Мы уже вычисляли такое произведение в самом общем виде (см. пред-предыдущее уравнение). Если честно вычислить скалярное произведение позиционной и направленной компонент произведения, то мы вновь получим ноль, не зависимо от конкретных значений координат двух точек:

\begin{eqnarray} (p_x q_y - q_x p_y)(p_z - q_z) &+\\ +~ (p_x q_z - q_x p_z)(q_y - p_y) &+\\ +~ (p_y q_z - q_y p_z)(p_x - q_x) &= 0. \end{eqnarray}

На практике представления прямых, плоскостей и пространств более высоких размерностей не строятся покомпонентно с помощью явного задания коэффициентов мультивекторов. Такие коэффициенты нужны только для точек и, как мы видели, переход от декартового представления точки к мультивектору и обратно, совершенно тривиален. Прямая в пространстве любой размерности однозначно строится с помощью двух точек через их внешнее произведение, а значит, получившийся 2-вектор гарантированно будет геометрическим числом. Таким же образом внешнее произведение прямой и точки (или внешне произведение трёх точек, не лежащих на одной прямой) даст корректное представление плоскости и так далее. Это же справедливо и для двойственных операций: прямая, полученная пересечением двух плоскостей (регрессивного произведения их представлений), тоже будет удовлетворять геометрическому условию автоматически. Это значит, что нам нет необходимости проверять алгебраические представления на корректность, коль скоро мы используем только алгебраические операции и геометрические числа для их построения.

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

Идеальные объекты

Ещё раз вернёмся к разделению геометрических чисел на позиционную и направленную компоненты. Любая из них может быть равна нулю, и если с интерпретацией нулевой позиционной компоненты никаких проблем нет, то числа без направленной компоненты могут вызвать недоумение.

Начнём с точки на плоскости. Её представляет 1-вектор p_x \mathbf{e}_x + p_y \mathbf{e}_y + \underline{\mathbf{e}_{xy}} и если все коэффициенты в позиционной части будут равны 0, то получившееся число \underline{\mathbf{e}_{xy}} будет представлять начало координат, то есть точку O = (0,0). Но что будет представлять число p_x \mathbf{e}_x + p_y \mathbf{e}_y? Его нельзя привести к нормализованной форме, поскольку невозможно сделать отсутствующую направленную часть равной единице, но можно попробовать приблизиться к нему, нормируя 1-вектор p_x \mathbf{e}_x + p_y \mathbf{e}_y + m \underline{\mathbf{e}_{xy}}, и устремив позиционный коэффициент m к нулю. Геометрической интерпретацией предела для такого 1-вектора будет точка, бесконечно удалённая от начала координат в направлении вектора (p_x,p_y). Такой предельный объект называется идеальной точкой. В евклидовой геометрии идеальных точек нет, тогда как проективная геометрия не только допускает их существование, но и даёт им точный смысл «точки пересечения» двух параллельных прямых на линии горизонта.

Давайте с помощью регрессивного произведения вычислим где пересекутся две прямые, имеющие одинаковое направление, но разное смещение относительно начала координат. Направление обеих прямых зададим вектором \mathbf{v} = (v_x,v_y), а смещения числами m и m':

\begin{eqnarray*} && (\underline{v_y\mathbf{e}_{x} - v_x\mathbf{e}_{y}} + m\mathbf{e}_{xy})\vee(\underline{v_y\mathbf{e}_{x} - v_x\mathbf{e}_{y}} + m'\mathbf{e}_{xy}) =\\ &=& - v_y v_x\underline{\mathbf{e}_{xy}} - v_y m'\mathbf{e}_{y} + v_x v_y \underline{\mathbf{e}_{xy}} - v_x m'\mathbf{e}_{x} + m v_y \mathbf{e}_{y} + m v_x\mathbf{e}_{x} =\\ &=& (m - m')(v_x \mathbf{e}_{x} + v_y \mathbf{e}_{y}). \end{eqnarray*}

Как видим, результат представляет идеальную точку, бесконечно удалённую от начала координат в направлении \mathbf{v} , то есть, вдоль наших параллельных прямых.

Идеальные точки, расположенные симметрично относительно начала координат, отождествляются. Алгебраически это связано с тем, что масштабирование на -1 не изменяет геометрической интерпретации 1-вектора. А с другой стороны, это отражает геометрическое свойство двух проективных прямых «пересекаться» в идеальной точке в обоих направлениях вдоль этих прямых (параллельные рельсы сходятся на горизонте, как впереди, так и позади наблюдателя).

Прямые на плоскости, не имеющие позиционной части, это обычные прямые, которые проходят через начало координат. А вот прямая \mathbf{e}_{xy} без направленной части единственная (с точностью до масштабирования) и представляет идеальную прямую. Чтобы понять её смысл, найдём точку пересечения идеальной прямой с произвольной неидеальной прямой, направленной вдоль вектора \mathbf{v} = (v_x,v_y):

(\underline{v_y\mathbf{e}_{x} - v_x\mathbf{e}_{y}} + m\mathbf{e}_{xy})\vee\mathbf{e}_{xy} = v_x \mathbf{e}_{x} + v_y \mathbf{e}_{y}.

Они пересекаются в идеальной точке, соответствующей направлению реальной прямой, и поскольку с идеальной прямой пересекаются все реальные прямые, мы можем сделать вывод, что идеальная прямая представляет линию горизонта, то есть, геометрическое место всех идеальных точек. Очевидно, что линия горизонта \underline{O} = \mathbf{e}_{xy} и начало координат O = \underline{\mathbf{e}_{xy}} являются взаимно двойственными объектами.

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

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

В проективной геометрической алгебре с любой прямой, плоскостью и другим подпространством x размерности больше нуля, связан уникальный идеальный объект — пересечение этого подпространства с горизонтом:

\mathrm{att}(x) = x \vee \underline{O}.

Для прямой это её направление, выражаемое идеальной точкой; для плоскости — направление нормали, выраженное идеальной прямой и т.д. Ленгэль назвал эти объекты словом «attitude», которое в нашем контексте можно перевести как ориентация. Это полезная характеристика для определения отношения параллельности между прямыми или плоскостями. В частности, две прямые в пространстве параллельны (не скрещиваются), если представляющие их геометрические числа имеют одинаковую ориентацию.

Точка пересечения двух прямых в 3D

Регрессивное произведение для прямых в трёхмерном пространстве не даёт в результате точку их пересечения, а только показывает, что такая точка существует, если произведение равно нулю. Давайте решим задачу поиска точки пересечения двух прямых алгебраически.

Пусть даны две прямые a и b, причём a \wedge b = 0, а значит, эти прямые лежат в одной плоскости (обозначим её P) и гарантированно пересекаются, быть может, в идеальной точке на горизонте. Для того, чтобы найти точку пересечения этих прямых, надо свести задачу к пересечению прямой a и некоторой плоскости P', которая бы включала бы в себя прямую b, но при этом заведомо бы не включала прямую a. Итак, искомая точка x, в которой пересекаются прямые a и b может быть вычислена следующим образом:

  1. Вычисляем плоскость P, как объединение прямой a и ориентации прямой b: P = a \wedge \mathrm{att}(b).Если P = 0, то это значит, что прямые параллельны, и пересекаются в идеальной точке, то есть, x = \mathrm{att}(a) = \mathrm{att}(b).

  2. Вычисляем плоскость P', как объединение прямой b и точки, двойственной плоскости P, и получаем результат: x = a \vee (b \wedge \overline{P}).

Операции расширения и сжатия

Для поиска точки пересечения двух прямых в пространстве нам понадобилось построить вспомогательную плоскость, проходящую через заданную прямую и ортогональную заданной плоскости. Для прямой b и плоскости P она вычислялась как b \wedge \overline{P}. Этот приём универсален и работает для различных объектов. Для точки и прямой на плоскости он даёт прямую, проходящую через точку, перпендикулярную заданной прямой; для точки и плоскости — прямую, содержащую точку, нормальную плоскости и т.д.

Вместо соединения с дополнением всей плоскости \overline{P} лучше использовать дополнение только её направленной части: \overline{P_\circ} . Во-первых, часто это эффективнее (остаётся меньше компонент в произведении), во-вторых, именно направленная часть содержит необходимую информацию о направлении, а в-третьих, результатом такого дополнения будет идеальный объект, который точно не совпадёт с реальным первым аргументом внешнего произведения. Такое нечаянное совпадение может дать нулевой результат соединения притом, что корректный результат существует, например, в случае поиска прямой, ортогональной плоскости и проходящей через точку, двойственную этой плоскости.

Введём бинарную операцию:

x \mathbin{⫤} y = x \wedge \overline{y_\circ},

которая называется расширением (expand), и возвращает максимальное подпространство, включающее в себя x и ортогональное y. Эта операция несимметрична, первый аргумент (на который указывает знак операции), должен иметь размерность строго меньшую размерности второго аргумента. Размерность результата при этом равна n +\mathrm{dim}(x)- \mathrm{dim}(y), где n — это размерность всего проективного пространства. Если размерности аргументов совпадают, то результатом будет некоторый псевдоскаляр, а если \mathrm{dim}(x)>\mathrm{dim}(y), то ноль. Расширение работает корректно даже если пространство x принадлежит пространству y.

Результаты расширения различных объектов в 2D и 3D показаны в тонах синего.
Результаты расширения различных объектов в 2D и 3D показаны в тонах синего.

Приведённая выше иллюстрация показывает, что если пересечь расширение x с пространством y, то результатом будет ортогональная проекция подпространства x на y:

x \mathbin{\to\!\!\! |\,} y = y \vee (x \wedge \overline{y_\circ}).

Результатом проекции всегда будет объект той же размерности, что и x, принадлежащий как y, так и ортогональному дополнению к y.

Если заменить в определении проекции все операции на двойственные, то получим операцию анти-проекции, которая не отображает один объект на другой, а ортогонально переносит объект y на x:

x \mathbin{\leftarrow \!\!\!|} y = y \wedge (x \vee \overline{y_\circ}).

Результаты этих двух операций показаны на иллюстрации:

Чёрная пунктирная стрелочка показывает проекцию, красная — анти-проекцию.
Чёрная пунктирная стрелочка показывает проекцию, красная — анти-проекцию.

Обратите внимание, что анти-проекцией плоскости y на прямую x будет плоскость, содержащая x, с нормальным вектором, лежащим в плоскости x \mathbin{⫤} y.

Следуя логике геометрической алгебры, мы можем ожидать, что у операции расширения должна быть сестра-двойник — двойственная расширению операция сжатия:

x \mathbin{\lfloor}  y = x \vee \overline{y_\bullet},

которая даёт в результате минимальное подпространство, содержащееся в x и при этом, ортогональное y. Если операция расширения увеличивает размерность первого аргумента, расширяя его пространством, ортогональным второму, то операция сжатия уменьшает размерность первого аргумента, исключая из него пространство, ортогональное второму.

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

* * *

Подведём итог. Во внешней алгебре мы можем производить кое-какие геометрические операции: находить соединение и пересечение, расширение и сжатие, проекцию и антипроекцию. Это может быть неочевидным, но все они имеют одно общее свойство — необратимость: по результату восстановить аргументы операции не получится, поскольку часть информации неизбежно теряется. Необратимость связана с тем, что во внешней алгебре геометрическое умножение всех базисных компонент на самих себя равно нулю, то есть, внешняя алгебра представляет геометрию с тривиальной метрикой. Из-за этого во внешней алгебре остаются недоступными обратимые движения и изометрии: повороты на произвольные углы, отражения от прямых и точек, и параллельный перенос на заданный вектор. Это серьёзные ограничения ради которых стоит поискать, нет ли такой алгебры Клиффорда, которая могла бы расширить внешнюю алгебру всеми этими инструментами. В следующей части мы, оснастим внешнюю геометрическую алгебру нетривиальным геометрическим произведением и получим полноценную геометрию со всеми перечисленными выше преобразованиями.

А напоследок, я хочу средствами внешней геометрии построить что-нибудь красивое. Например, посмотреть на то, как вращается четырёхмерная сфера. Для этого я задал параметризацию четырёхмерной сферы, и «намотал» на неё проволочный каркас в алгебре PEA4. Вращения во внешней алгебре нет, но организовать вращение одной точки через синус-косинус в координатах легко. Поэтому я выделил некоторый трёхмерный объём, как пространство, двойственное вращающейся точке, и с помощью оператора ->| получил проекцию четырёхмерной сферы на указанный объём. Так у меня получилось трёхмерное пространство, корректно вращающееся в плоскости Ozw (осей вращения в 4D нет). Наконец, изображение на экране получено как центральная проекция трёхмерного «проволочного» каркаса сферы на плоскость в PEA2 .

Более плотная набивка проволоки по трёхмерной поверхности сферы показывает распределение её плотности.
Более плотная набивка проволоки по трёхмерной поверхности сферы показывает распределение её плотности.
Код, генерирующий анимацию
-- параметризация сферы
sphere r θ1 θ2 ϕ =
  point [ r * cos θ1
        , r * sin θ1 * cos θ2
        , r * sin θ1 * sin θ2 * cos ϕ
        , r * sin θ1 * sin θ2 * sin ϕ] :: PEA 4

sphere4d = animate 51 (0,2*pi) $ \a ->
  let -- число оборотов "проволоки" по разным направлениям
      (m1, m2, m3) = (1,25,7)
      -- обмотка сферы
      winding = mapM_ (<@ [stroke_ "orangered", opacity_ "0.15"])
        [ polyline
          [ sphere 20 (pi*m1*t) (m2*t+2*pi/m2*i) (pi*m3*t)
          | t <- [0, pi/600 .. pi]]
        | i <- [0 .. 2*m2-1]]
      -- объём в который проецируется сфера и оператор проекции
      vol = dual $ ipoint [0.5, 0, cos a, sin a]
      proj x = x ->| vol
  in chart `bg` "black"
     $ viewFrom @(PEA 4) @(PEA 2) [10,-10,50,50]
     $ mapSpace proj winding

main :: IO ()
main = runAnimation "sphere.gif" sphere4d

Комментарии (3)


  1. lgorSL
    18.07.2025 20:55

    Вы написали про Cl(0, 0, 4) и я очень впечатлён, насколько оно похоже на Cl(3, 0, 1).

    Но я бы ещё добавил, что в общем виде в уравнении точки в 3д четвёртый элемент тоже может быть отличным от единицы. Например, разностью двух точек будет вектор с четвёртым элементом-нулём и это валидная сущность.

    Я надеюсь, вы как-нибудь потом напишете про Cl(3, 0, 1).
    Там смысл weight и bulk более понятен - это элементы которые в квадрате равны единице и элементы котороые в квадрате равны нулю.
    Причём, что интересно и красиво, и та и та нормализация (по bulk и по weight элементам) имеет смысл.

    Например, для уравнения плоскости в общем виде можно либо привести к единице длину нормали, либо сделать "единичным" сдвиг от нуля координат)
    Для линии нормализация сделает единичное направление. Для уравнения точки - уберёт четвёртый элемент в единицу. Либо не уберёт для случая идеальной точки, но тогда можно хотя бы сделать другую нормализацию, чтобы сумма квадратов остальных трёх элементов давала единицу.

    А ещё про смысл weight - если сказать что четвёртый элемент точки это вес, то сумма таких точек с массой будет точкой-центром масс.


    1. samsergey Автор
      18.07.2025 20:55

      Отличные замечания!

      Я решил пойти в этой серии долгим путём: от внешней алгебры к алгебре с нетривиальным метрическим тензором, чтобы показать общность подходов а, главное, продемонстрировать необходимость тех или иных компонент а алгебре. В частности, в Cl_{3,0,1} введение дополнительного инфинитезимального компонента не условность, не хитрый приëм, а способ не противоречиво дополнить внешнюю алгебру (неявно входящую в аффинную геометрическую) недостающими возможностями для построения проективной евклидовой (или неевклидовой) геометрии.

      Следующая часть будет посвящена алгебрам Cl_{n, 0,1} и там уже через метрический тензор мы точно разделим weight и bulk компоненты, нормы и дополнения.


  1. eugenk
    18.07.2025 20:55

    Ещё не читал, но сразу лайк за продолжение серии !