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

Перечислим типичные вопросы:

  • Является ли прямым угол, образованный двумя отрезками с общей вершиной?

  • Являются ли два отрезка параллельными? Если нет, то как найти точку их пересечения?

  • Принадлежат ли 4 точки одной плоскости? И если нет, то какая из точек наиболее выпирает?

  • Чему равны площадь треугольника, объем тетраэдра?

  • Ну и наконец, last but not least вопрос - как рассчитать кривизну набора точек?

Немного определений

Предварительно заглянем под капот - на что опирается дистанционная геометрия.

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

  2. Пространство задается базисом. В качестве базиса будем использовать набор точек. Можно назвать такой базис аффинным.

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

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

  4. Полезно определить понятие аффинного вектора - это вектор, который можно представить как разность двух точек, вершин вектора. Например, вот так: (ab) = b - a. Отметим, что тут используется разность элементов, а не чисел. Поскольку разность - это несимметричная операция, то с вектором можно связать направление (ориентацию).

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

Скалярное произведение

На скалярном произведении стоит остановиться подробнее. Результат скалярного произведения аффинного вектора на себя соответствует норме вектора, которая известна так же как квадрат его длины. Соответственно, скалярное умножение аффинного вектора на себя дает нам квадрат расстояния между точками, которые его образуют. Ну и поскольку вектор - это разность точек (элементов), то можно связать скалярное произведение элементов и дистанцию между ними:

r_{ab} = |ab|^2 = (ab)^2 = (b - a)^2 = a^2 + b^2 - 2 \ (a\cdot b) \qquad (1)

Полезно тут же привести и теорему косинусов, - следствие определения векторов как разности элементов:

(ab)^2 = (b - x + x - a)^2 = (xa)^2 + (xb)^2 - 2(xa) \cdot (xb)

Здесь элементxможет быть любым, в том числе нулевым (то есть отсутствовать) - выражение для квадрата расстояния останется справедливым.

Здесь и далее для удобства мы различаем понятия дистанция и расстояние. Дистанцией будем называть квадрат расстояния (опираемся на префикс "ди"). Дело в том, что в метрическом пространстве приходиться иметь дело в основном с квадратами расстояний, - следствие того, что сама метрика - это соотнесение (умножение) одних объектов на другие.

Итак, в формуле (1)дистанция между элементами (она же - норма вектора) выражена через нормы элементов a^2, b^2и скалярное произведение между ними a \cdot b. Если элементы являются точками пространства, то их нормы равны нулю. Вообще норма элемента - важная характеристика: если она положительна, то элемент можно интерпретировать как сферу, если отрицательна - то элемент локализован вне пространства (базиса), но подробнее об этом - позже. В простейшем же случае как правило измеряются расстояния (дистанции) между точками. Тогда нормы в формуле можно взять нулевые и получаем выражение для скалярного произведения точек на основе дистанции между ними:

(a \cdot b) = -r_{ab} / 2 = -(ab)^2/2

Используя данную простенькую формулу, мы можем выразить скалярное произведение между аффинными векторами, зная дистанции между их вершинами:

(ab) \cdot (cd) = (b \cdot d) - (a \cdot d) + (a \cdot c) - (b \cdot c) = (r_{ad} + r_{bc} - r_{ac} - r_{bd})/2 \qquad (2)

Вместо дистанций можно использовать и нормы соответствующих векторов, - тождество не зависит от норм элементов: (ab) \cdot (cd) = ((ad)^2 + (bc)^2 - (ac)^2 - (bd)^2)/2.

Тут про скалярное произведение аффинных векторов описано более подробно и наглядно.

Косинусы и синусы

Что полезного в формуле (2)- мы можем подставить в нее измеренные рулеткой дистанции (тут пригодилась бы рулетка с квадратами расстояний) и получить оценку косинуса угла между векторами (кто не помнит - скалярное произведение векторов равно произведению их длин на косинус угла между ними).

Если два вектора являются смежными (имеют общую вершину), то формула сводится к теореме косинусов: (ab) \cdot (cb) = ((ab)^2 + (bc)^2 - (ac)^2)/2. Из нее вытекает теорема Пифагора - условие перпендикулярности двух векторов:

(ab) \cdot (cb) = 0:  \quad (ab)^2 + (bc)^2 = (ac)^2 \qquad (3)

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

Едем дальше. Можно ли, используя только дистанции, рассчитать площадь треугольника? Ответ положительный. Воспользуемся известным геометрическим фактом. Пусть даны два вектора (обозначим их для краткости p = (ab)и q = (cd). Тогда детерминант грамиана, образованного данными векторами, будет равен квадрату площади задаваемого ими параллелограмма. Вот грамиан на векторах:

\begin{array} {c|c c}  G & p & q \\ \hline p & p^2 & p \cdot q \\ q & q \cdot p & q^2 \end{array}

А вот значение его детерминанта:

S^2_\diamond = det(G[p, q]) = p^2 q^2 - (p \cdot q)^2 \qquad (4)

Можно ввести понятия косинуса и синуса угла между векторами, - это позволит выразить площадь параллелограмма в более привычной форме:

S^2_\diamond = p^2 q^2 (1 - cos^2_{pq}) = p^2 q^2 sin^2_{pq}, \quad S_\diamond = |p| |q| sin_{pq}

Площадь треугольника - в два раза меньше площади параллелограмма: S_\triangle = S_\diamond /2. При этом надо иметь ввиду, что для получения данного треугольника надо параллельным переносом векторов в пространстве совместить их начала.

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

sin(ab, cd) = 0: \quad 2 |ab| |cd| = (ad)^2 + (bc)^2 - (ac)^2 - (bd)^2 \qquad (5)

То есть для оценки параллельности положения двух бревен надо измерить 6 расстояний между 4 вершинами и подставить в тождество(5).

Принадлежность пространству базиса

Часто необходимо убедиться, что заданные 4 точки лежат в одной плоскости. Как это можно сделать, имея в руках только рулетку?

Можно применить тот же подход, что и в предыдущем примере. Если 4 точки принадлежат одной плоскости, то это означает, что объем образуемого ими тетраэдра равен нулю. Объем тетраэдра можно оценить через детерминант грамиана, построенного на векторах, которые задают тетраэдр. Но тут возникает вопрос - а какие векторы следует выбрать из всего множества доступных векторов, которые можно образовать на 4-х вершинах?

Для ответа нам придется копнуть немного глубже в математику. Векторный грамиан соответствует квадратичной форме, образованной границей из 4-х точек(abcd)(понимаю, что для обычного человека это просто набор непонятных слов, но можно пока сильно не вникать). В статье про внешнюю алгебру показано, что такие границы могут быть представлены как произведение границ меньшего порядка, используя правило слияния. Поэтому граница из 4-х вершин может быть представлена как (внешнее) произведение векторов (границ 1-го порядка) различным образом, - лишь бы эти векторы образовывали остов, то есть соединяли все вершины тетраэдра (в общем случае произвольного симплекса). Примеры наборов векторов:

(abcd)=(ab)(bc)(cd)=(ac)(cd)(db) = (ac)(bc)(bd) = \dots

В общем случае тут надо следить за знаками, но поскольку нас интересует квадратичный грамиан, то знак значения не имеет. Если выбран первый набор векторов, то получим такой грамиан:

\begin{array}{c|c c c}   G_{abcd} & (ab) & (bc) & (cd) \\    \hline   (ab) & (ab)^2 & (ab) \cdot (bc) & (ab) \cdot (cd) \\   (bc) & (bc) \cdot (ab) & (bc)^2 & (bc) \cdot (cd) \\   (cd) & (cd) \cdot (ab) & (cd) \cdot (bc) & (cd)^2 \end{array}

Для расчета значений грамиана (скалярных произведений векторов) можно использовать формулу(2).

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

(l! \ V)^2 = det(G) \qquad (6)

где l = n - 1 - мерность пространства. Для 4-точек (тетраэдр) пространство будет 3-мерным. Если все 4 точки лежат в одной плоскости, то детерминант грамиана будет равен нулю.

Грамиан на вершинах

Если вдруг оказалось, что точки не лежат в одной плоскости (детерминант грамиана отличен от нуля), то обычно возникает вопрос - насколько каждая из точек "выпирает"? То есть насколько она удалена от плоскости, заданной тремя оставшимися точками?

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

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

Итак, - для того, чтобы с помощью расстояний между точками задать плоскость, - трех точек недостаточно. Нужен еще один элемент базиса. Назовем его нормалью. Особенность нормали в том, что ее скалярное произведение с точками пространства всегда равно 1. Соответственно, умножение нормали на любой вектор будет равно 0. Другими словами нормаль заведомо перпендикулярна всем векторам пространства. Но основной поинт в том, что норма нормали отражает кривизну пространства (заданного базисом). Если пространство плоское (как мы до сих пор подразумевали), то норма нормали равна нулю. Такую нормаль назовем нуль-векторомz. Соответственно, теперь можно определить метрический тензор на вершинах (он же - грамиан) плоского пространства. Для трех элементов (точек) он будет таким:

\begin{array}{c|c c c c}   Gz & z & a & b & c \\    \hline   z & 0 & 1 & 1 & 1 \\   a & 1 & 0 & -(ab)^2/2 & -(ac)^2/2 \\   b & 1 & -(ab)^2/2 & 0 & -(bc)^2/2 \\   c & 1 & -(ac)^2/2 & -(bc)^2/2 & 0 \end{array}

В википедиях обычно приводят похожую на него матрицу дистанций Кэли-Менгера. Но отличие в том, что в ней вместо скалярных произведений элементов используются сами дистанции. Из-за этого усложняется формула для связи детерминанта матрицы и объема симплекса. В нашем же грамиане все проще, его значение совпадает со значением приведенного выше векторного грамиана с обратным знаком. А, значит, связано с квадратом объема симплекса: det(Ge) = -(l! \ V)^2.

С практической точки зрения грамиан на вершинах заполнить проще, чем грамиан на векторах. Тут достаточно измерить дистанции и внести их значения в грамиан. Не надо рассчитывать скалярные произведения векторов базиса.

Если детерминант метрического тензора нашего базиса отличен от нуля, то его можно обратить, и получить обратный метрический тензор. Данный тензор мы назовем лапласианом, и вот почему. Если интерпретировать дистанции между элементами как резистивные (то есть как значения сопротивлений в электрической цепи), то обратный метрический тензор (точнее - его главный минор, но не суть) можно трактовать как лапласиан графа, образованного связями между элементами. Значениями элементов матрицы-лапласиана будут проводимости между узлами графа (с обратным знаком), а значениями диагонали - степени узлов графа (суммарным количеством связей узла). Детерминант лапласиана равен количеству остовных деревьев, которые можно построить на связях графа. Короче говоря, получаем стыковку понятий комбинаторики и метрики. Вот примерный вид обратного метрического тензора Lz = Gz^{-1}:

\begin{array}{c|c c c c}   Lz & s & a & b & c \\    \hline   s & rad^2 & s^a & s^b & s^c \\   a & s^a & d^a & -c^{ab} & -c^{ac} \\   b & s^b & -c^{ab} & d^b & -c^{bc} \\  c & s^c & -c^{ac} & -c^{bc} & d^c \end{array}

Как уже упоминалось, обычно лапласианом называют главный минор данной матрицы - без первой строки и колонки. Хотя она тут является приятным бонусом - содержит параметры ортогонального центра базиса (его нормуrad^2и барицентрические координатыs^i.

Свойство лапласиана - степени вершин равны сумме связей данной вершины с остальными: d^i = c^{ib} + c^{ic}. Но сейчас нас больше интересует не графовая интерпретация значений лапласиана, а метрическая. Так вот, оказывается (это несложно показать, но не будем увлекаться деталями), что степени вершин обратно пропорциональны дистанциям от вершин до подпространств, образованных остальными вершинами. Другими словами, значение1/d^aравно дистанции от точкиaдо плоскости, заданной точкамиb, c, d. А это именно то значение, которое нам нужно для определения "выпирания" точек. В терминах связности - чем больше связь вершины графа с остальными (степень вершины d^i- тем ближе данная вершина к подпространству остальных вершин.

Итак, для того, чтобы рассчитать "отклонение" каждой из 4-х точек до плоскости, заданной остальными точками, надо:

  1. Измерить все дистанции между точками, и занести их половинные значения с минусом в матрицу - грамиан вершин.

  2. Добавить в данный грамиан нуль-вектор и обратить его.

  3. Обратные значения диагонали полученного лапласиана будут равны дистанциям от вершин до подпространств (плоскостей) - то есть искомому отклонению.

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

Что там с кривизной

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

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

Таким образом грамиан, построенный на 3-х точках, в общем случае задает пространство окружности (одномерной сферы), грамиан на 4-точках - пространство 2-мерной сферы, грамиан на 5 точках - пространство 3-мерной сферы. Как определить кривизну заданной пространства? Ответ - надо рассчитать норму нормали. Значение нормы будет обратно квадрату радиуса сферы (с минусом). Нулевая норма - бесконечный радиус - плоское пространство.

Как рассчитать норму? Несложно. Для нормали мы знаем значения ее произведения с точками базиса (равны 1). Этот набор значений можно интерпретировать как дуальные координаты нормали в базисе. Для расчета нормы элемента надо его дуальные координаты умножить на обычные (в аффинном базисе - барицентрические). Как определить координаты по дуальным? Умножить дуальные на обратный метрический тензор. Получается, что для расчета нормы нормали надо обратный грамиан на вершинах (он же - метрический тензор) умножить слева и справа на кортеж из единиц. Фактически это эквивалентно суммированию всех значений обратного грамиана.

Давайте продемонстрируем это на алгебраическом языке. Итак, пусть у нас есть три точки. Как определить кривизну (или радиус) окружности которые они задают?

  1. Сначала нужно измерить дистанции между точками и занести в матрицу:

    \begin{array}{c|c c c}   R & a & b & c \\    \hline   a & 0 & (ab)^2 & (ac)^2 \\   b & (ab)^2 & 0 & (bc)^2 \\   c & (ac)^2 & (bc)^2 & 0 \end{array}

  2. От дистанций перейти к вершинному грамиану: Gv_{ij} = -R_{ij}/2

  3. Обратить грамиан и получить обратный метрический тензор: Gv_{ij}^{-1}

  4. Просуммировать значения тензора - это и будет обратным радиусом (в квадрате), то есть кривизной пространства:

    \gamma = rad^{-2} = -\sum_{ij} {Gv_{ij}^{-1}}

    Можно и не связываться с грамианом, а использовать непосредственно матрицу дистанций. Тогда минус пропадет, но появится двойка:

    \gamma = 2 \sum_{ij} {R^{-1}} \qquad (7)

Очевидно, что описанный подход можно обобщить и для 4-х точек, и для 5. Как будто бы метрический тензор на 5 точках позволяет определить кривизну нашего 3-мерного пространства. Для этого надо выбрать точки, разнесенные как можно дальше, измерить между ними 10 расстояний (с максимально возможной точностью), подставить их квадраты в матрицу дистанцийR, обратить ее и просуммировать значения результата. Если сумма будет отличаться от 0, то наше пространство обладает кривизной.

Что тут является слабым местом? Измерение расстояний. Предполагается, что дистанции между двумя точками измеряются по кратчайшему расстоянию, которое определяет прямая между ними. Но как измерить "прямое расстояние", находясь в кривом пространстве?

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


Использованы материалы работы "О свойствах аффинных метрических пространств".

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