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

В этом курсе мы собираемся расширить все, что мы узнали ранее для трехмерного пространства, мы начнем с определения точки, затем мы определим план и то, как мы можем извлечь ее параметры, затем мы увидим, как определить линию в 3D, и, наконец, мы увидим конкретный пример.

Как и в 2D, точка в 3D-пространстве будет представлена ​​физическими координатами на плоскости (X, Y, Z), а также однородными координатами, заданными формулой

Все пункты, которые проверяют,

принадлежит одному и тому же классу эквивалентности, потому что они представляют одну и ту же физическую точку (X, Y, Z).

Точно так же, как и в 2D, бесконечно удаленные точки задаются выражением

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

Где H — матрица 4x4 с 15 степенями свободы.

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

Любая точка на плоскости удовлетворяет следующему уравнению:

Что эквивалентно,

Другой способ задать плоскость — использовать четырехмерный вектор (π1, π2, π3, π4), записанный в однородных координатах, и поэтому мы определяем плоскость как

Где (π1, π2, π3) — вектор нормали, а π4/ ||(π1, π2, π3)|| это перпендикулярное расстояние.

Чтобы определить плоскость, нам нужны как минимум три точки, принадлежащие плоскости и не лежащие на одной прямой, поскольку три точки принадлежат плану, у нас есть следующее уравнение:

Это уравнение позволяет нам сказать, что вектор π определяет одномерное нулевое пространство матрицы 3x4, которое содержит наши три точки.

Эта система недоопределена, потому что m ‹ n, поэтому, используя метод SVD на матрице 3x4, которая содержит все наши точки, мы знаем, что последний собственный вектор, который соответствует ненулевому сингулярному значению, является решением, которое мы ищем вектор π.

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

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

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

Где D_ {i, j, k} — субдетерминант, вычисляемый с использованием строк i, j, k в качестве подматрицы.

Используя тот факт, что X также принадлежит плоскости и, следовательно, проверить

Мы получаем,

Важно отметить, что в частном случае, когда все три точки X_1, X_2, X_3 являются бесконечно удаленными точками, то есть только W_1, W_2, W_3 не равны нулю, мы получаем, что

Который определяется как плоскость в бесконечности.

Линии самодвойственны в 3D

Чтобы найти точку пересечения обозначений X между тремя плоскостями, мы можем начать с того факта, что X принадлежит трем плоскостям, и, следовательно, проверить

Это двойная формулировка по отношению к той, что определена выше, поэтому мы можем использовать тот же метод для решения этой проблемы, этот небольшой пример позволяет нам показать, что точка и плоскости двойственны, так же, как мы видели в 2D с точка и линия.

Линии в 3D

Трехмерную линию можно создать из двух точек A и B или из пересечения двух плоскостей, как показано на рисунке ниже.

Если в нашем распоряжении есть две точки А и В, прямая линия между этими двумя точками представлена

Где W - недоопределенная матрица размера 4x2, нулевое пространство матрицы имеет размерность 2 и натянуто на P и Q, которые удовлетворяют

И поэтому

Это означает, что P и Q должны быть плоскостями и что A и B лежат в одних и тех же плоскостях.

Линия, определяемая как пересечение двух плоскостей P и Q, определяется выражением

Эта система также не определена, с двумерным нулевым пространством, натянутым на A и B, которые удовлетворяют

И поэтому

Отсюда следует, что точки A и B лежат на двух плоскостях P и Q, поэтому пересечение двух плоскостей P и Q содержит прямую AB.

Из двух случаев, указанных выше, мы можем сделать вывод, что

Теперь посмотрим на конкретный пример приложения, предположим, что в нашем распоряжении есть две точки A = (1,1,0,1) и B = (2,2,0,1), и плоскость π = ( 3 ,1,0, -10), как показано на рисунке ниже

Мы знаем, что линия, соединяющая A с B, задается

Что является двойной формулировкой,

Где P и Q — базовые векторы нулевого пространства матрицы W, зная, что P и Q — две плоскости, содержащие A и B, мы можем зафиксировать первую плоскость P в точке (0,0,1,0), которая представляет плоскости XY, а в качестве Q выберем перпендикулярную плоскости XY плоскость, имеющую вектор нормали, равный (-1,1,0), и содержащую исходную точку (0,0,0), поэтому Q равно равно (-1, 1,0,0), окончательно получаем

Если мы продолжим прямую AB до бесконечности, она пронзит плоскости π в определяемой точке X, эта точка задается пересечением трех плоскостей P, Q и π, и существует решение уравнения

Заключение

В этом курсе мы рассмотрели некоторые элементарные понятия проективных геометрий в 3D, увидели, как определять различные геометрические примитивы в однородных координатах, а также их двойственную формулировку, и, наконец, мы увидели согласованный пример использования этих формулы.

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