В трехмерной евклидовой геометрии, если две прямые не лежат в одной плоскости , они не имеют точек пересечения [1] и называются скрещивающимися прямыми . Однако, если они лежат в одной плоскости, есть три возможности: если они совпадают (не являются различными прямыми), они имеют бесконечное множество общих точек (а именно, все точки на любой из них); если они различны, но имеют одинаковый наклон , они называются параллельными и не имеют общих точек; в противном случае они имеют одну точку пересечения.
Отличительными чертами неевклидовой геометрии являются количество и места возможных пересечений между двумя прямыми, а также количество возможных прямых, не пересекающихся (параллельных прямых) с данной прямой. [ необходимо дополнительное объяснение ]
Формулы
Необходимым условием пересечения двух прямых является то, что они находятся в одной плоскости, то есть не являются скрещивающимися прямыми. Удовлетворение этого условия эквивалентно тому, что тетраэдр с вершинами в двух точках одной прямой и двух точках другой прямой является вырожденным в смысле нулевого объема . Алгебраическую форму этого условия см. в разделе Скрещивающиеся прямые § Проверка на скрещивание .
Даны две точки на каждой линии
Сначала рассмотрим пересечение двух линий L 1 и L 2 в двумерном пространстве, при этом линия L 1 определяется двумя различными точками ( x 1 , y 1 ) и ( x 2 , y 2 ) , а линия L 2 определяется двумя различными точками ( x 3 , y 3 ) и ( x 4 , y 4 ) . [2]
Пересечение P прямых L 1 и L 2 можно определить с помощью определителей .
Определители можно записать как:
Если две прямые параллельны или совпадают, знаменатель равен нулю.
Даны две точки на каждом отрезке прямой
Точка пересечения выше относится к бесконечно длинным линиям, определяемым точками, а не отрезками между точками, и может создать точку пересечения, не содержащуюся ни в одном из двух отрезков. Чтобы найти положение пересечения относительно отрезков, мы можем определить линии L 1 и L 2 в терминах параметров Безье первой степени :
(где t и u — действительные числа). Точка пересечения линий находится при одном из следующих значений t или u , где
и
с
Пересечение будет, если 0 ≤ t ≤ 1 и 0 ≤ u ≤ 1. Точка пересечения попадает в первый отрезок линии, если 0 ≤ t ≤ 1 , и попадает во второй отрезок линии, если 0 ≤ u ≤ 1. Эти неравенства можно проверить без необходимости деления, что позволяет быстро определить существование любого пересечения отрезков линии до вычисления его точной точки. [3]
Даны два уравнения линии
Координаты x и y точки пересечения двух невертикальных прямых можно легко найти с помощью следующих подстановок и перестановок.
Предположим, что две линии имеют уравнения y = ax + c и y = bx + d, где a и b — наклоны ( градиенты) линий, а c и d — y -пересечения линий. В точке пересечения двух линий (если они пересекаются) обе координаты y будут одинаковыми, отсюда и следующее равенство:
Мы можем перестроить это выражение, чтобы извлечь значение x ,
и так,
Чтобы найти координату y , нам нужно всего лишь подставить значение x в одно из двух уравнений прямой, например, в первое:
Следовательно, точка пересечения — это
Обратите внимание, что если a = b , то две прямые параллельны и не пересекаются, если только c = d ; в этом случае прямые совпадают и пересекаются в каждой точке.
Использование однородных координат
Используя однородные координаты , точку пересечения двух неявно определенных линий можно определить довольно легко. В 2D каждая точка может быть определена как проекция 3D точки, заданной как упорядоченная тройка ( x , y , w ) . Отображение из 3D в 2D координаты есть ( x ′, y ′) = ( х/ж , у/ж ) . Мы можем преобразовать 2D-точки в однородные координаты, определив их как ( x , y , 1) .
Предположим, что мы хотим найти пересечение двух бесконечных прямых в 2-мерном пространстве, определяемое как a 1 x + b 1 y + c 1 = 0 и a 2 x + b 2 y + c 2 = 0 . Мы можем представить эти две прямые в линейных координатах как U 1 = ( a 1 , b 1 , c 1 ) и U 2 = ( a 2 , b 2 , c 2 ) . Пересечение P ′ двух прямых тогда просто задается как [4]
Если c p = 0 , то прямые не пересекаются.
Более двух строк
Пересечение двух прямых можно обобщить, включив дополнительные прямые. Существование и выражение для проблемы пересечения n прямых следующие.
В двух измерениях
В двух измерениях более двух прямых почти наверняка не пересекаются в одной точке. Чтобы определить, пересекаются ли они, и если да, то найти точку пересечения, запишите i -е уравнение ( i = 1, …, n ) как
и сложить эти уравнения в матричную форму как
где i -я строка матрицы A размером n × 2 равна [ a i 1 , a i 2 ] , w — вектор размером 2 × 1 [х у] , аi-й элемент вектора-столбца b равен b i . Если A имеет независимые столбцы, еерангравен 2. Тогда тогда и только тогда, когда ранграсширенной матрицы[ A | b ]также равен 2, существует решение матричного уравнения и, следовательно, точка пересеченияnлиний. Точка пересечения, если она существует, задается как
где A g — обобщенная обратная матрица Мура–Пенроуза для A (которая имеет указанную форму, поскольку A имеет полный ранг столбца). В качестве альтернативы решение можно найти, совместно решая любые два независимых уравнения. Но если ранг A равен только 1, то если ранг расширенной матрицы равен 2, то решения нет, а если ее ранг равен 1, то все строки совпадают друг с другом.
В трех измерениях
Вышеуказанный подход можно легко распространить на три измерения. В трех или более измерениях даже две прямые почти наверняка не пересекаются; пары непараллельных прямых, которые не пересекаются, называются скрещивающимися прямыми . Но если пересечение существует, его можно найти следующим образом.
В трех измерениях линия представлена пересечением двух плоскостей, каждая из которых имеет уравнение вида
Таким образом, набор из n линий можно представить с помощью 2 n уравнений в трехмерном координатном векторе w :
где теперь A равно 2 n × 3 , а b равно 2 n × 1. Как и прежде, существует единственная точка пересечения тогда и только тогда, когда A имеет полный ранг столбца, а расширенная матрица [ A | b ] — нет, и единственное пересечение, если оно существует, задается формулой
Ближайшие точки к скрещивающимся линиям
В двух или более измерениях мы обычно можем найти точку, которая является наиболее близкой к двум или более линиям в смысле наименьших квадратов .
В двух измерениях
В двумерном случае сначала представим линию i как точку p i на линии и единичный нормальный вектор n̂ i , перпендикулярный этой линии. То есть, если x 1 и x 2 — точки на линии 1, то пусть p 1 = x 1 и пусть
который представляет собой единичный вектор вдоль линии, повернутый на прямой угол.
Расстояние от точки x до прямой ( p , n̂ ) определяется по формуле
Итак, квадрат расстояния от точки x до прямой равен
Сумма квадратов расстояний до многих линий представляет собой функцию стоимости :
Это можно переставить:
Чтобы найти минимум, дифференцируем по x и приравниваем результат к нулевому вектору:
так
и так
В более чем двух измерениях
Хотя n̂ i не является хорошо определенным в более чем двух измерениях, это можно обобщить на любое число измерений, заметив, что n̂ i n̂ i T — это просто симметричная матрица со всеми собственными значениями, равными единице, за исключением нулевого собственного значения в направлении вдоль линии, что обеспечивает полунорму на расстоянии между p i и другой точкой, дающей расстояние до линии. В любом числе измерений, если v̂ i — единичный вектор вдоль i -й линии , то
Чтобы найти точку пересечения набора прямых, мы вычисляем точку с минимальным расстоянием до них. Каждая прямая определяется началом a i и единичным вектором направления n̂ i . Квадрат расстояния от точки p до одной из прямых дается из Пифагора:
где ( p − a i ) T n̂ i — проекция p − a i на линию i . Сумма расстояний до квадрата до всех линий равна
Чтобы минимизировать это выражение, продифференцируем его по p .
В гиперболической геометрии для любой прямой и любой точки существует бесконечно много прямых, проходящих через эту точку и не пересекающих данную прямую. [6]
^ Антонио, Франклин (1992). "Глава IV.6: Более быстрое пересечение отрезков линий". В Kirk, David (ред.). Graphics Gems III . Academic Press, Inc. стр. 199–202. ISBN0-12-059756-X.
^ Birchfield, Stanley (1998-04-23). "Однородные координаты". robotics.stanford.edu . Архивировано из оригинала 2000-09-29 . Получено 2015-08-18 .
^ Траа, Йоханнес (2013). "Пересечение линий по методу наименьших квадратов" (PDF) . cal.cs.illinois.edu . Архивировано из оригинала (PDF) 2017-09-12 . Получено 2018-08-30 .