Линия – пересечение линии - Line–line intersection

Пересечение линий.

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

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

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

Формулы

Необходимое условие для двух линий пересекаются в том , что они находятся в той же плоскости, то есть не являются косыми линиями. Выполнение этого условия равносильно тому, что тетраэдр с вершинами в двух точках на одной прямой и двумя точками на другой прямой является вырожденным в смысле нулевого объема . Алгебраическую форму этого условия см. Склонные линии § Проверка на асимметрию .

Учитывая две точки на каждой строке

Сначала мы рассматриваем пересечение двух прямых и в 2-мерном пространстве, при этом прямая определяется двумя разными точками и , а прямая определяется двумя разными точками и .

Пересечение прямой и можно определить с помощью определителей .

Детерминанты можно записать как:

где знаменатель:

Когда две прямые параллельны или совпадают, знаменатель равен нулю. Если линии почти параллельны, то компьютерное решение может столкнуться с числовыми проблемами, реализующими решение, описанное выше: распознавание этого условия может потребовать приблизительной проверки в практическом приложении. Альтернативный подход может состоять в том, чтобы повернуть линейные сегменты так, чтобы один из них был горизонтальным, откуда легко получить решение повернутой параметрической формы второй линии. Требуется тщательное обсуждение особых случаев (параллельные линии / совпадающие линии, перекрывающиеся / неперекрывающиеся интервалы).

Учитывая две точки на каждом отрезке линии

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

(где t и u - действительные числа). Точка пересечения линий находится при одном из следующих значений t или u , где

а также

с участием:

Пересечение будет, если 0,0 ≤  t  ≤ 1,0 и 0,0 ≤  u  ≤ 1,0. Точка пересечения попадает в первый сегмент прямой, если 0,0 ≤  t  ≤ 1,0, и во второй сегмент, если 0,0 ≤  u  ≤ 1,0. Эти неравенства могут быть проверены без необходимости деления, что позволяет быстро определить наличие любого пересечения отрезков прямой до вычисления его точной точки.

Учитывая два линейных уравнения

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

Предположим , что две линии имеют уравнения и где и являются склоны (градиенты) линий и где и являются у -intercepts линий. В точке пересечения двух линий (если они пересекаются) обе координаты будут одинаковыми, отсюда следующее равенство:

Мы можем изменить это выражение, чтобы извлечь значение ,

так что,

Чтобы найти координату y , все, что нам нужно сделать, это подставить значение x в любое из двух линейных уравнений, например, в первое:

Следовательно, точка пересечения

Обратите внимание, если a = b, то две прямые параллельны . Если также cd , линии разные и пересечения нет, в противном случае две прямые идентичны.

Использование однородных координат

Используя однородные координаты , можно довольно легко определить точку пересечения двух неявно определенных линий. В 2D каждая точка может быть определена как проекция 3D точки, заданной как упорядоченная тройка . Преобразование из 3D в 2D координаты есть . Мы можем преобразовать 2D-точки в однородные координаты, определив их как .

Предположим, что мы хотим найти пересечение двух бесконечных прямых в 2-мерном пространстве, определяемом как и . Мы можем представить эти две линии в линейных координатах как и ,

Пересечение двух прямых в этом случае просто определяется выражением

Если линии не пересекаются.

Более двух строк

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

В двух измерениях

В двух измерениях более двух линий почти наверняка не пересекаются в одной точке. Чтобы определить, соответствуют ли они, и, если да, найти точку пересечения, запишите i-е уравнение ( i = 1,…, n ) как и сложите эти уравнения в матричную форму как

где я -я строка п × 2 матрица является , ш является 2 × 1 вектор ( х, у ) Т , и я -й элемент вектора - столбца Ь является Ь I . Если A имеет независимые столбцы, его ранг равен 2. Тогда тогда и только тогда ранг расширенной матрицы [ A | b ] также равно 2, существует решение матричного уравнения и, следовательно, точка пересечения n прямых. Точка пересечения, если она существует, задается формулой

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

В трех измерениях

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

В трехмерном пространстве линия представлена ​​пересечением двух плоскостей, каждая из которых имеет уравнение вида. Таким образом, набор из n линий может быть представлен 2 n уравнениями в трехмерном координатном векторе w = ( x , y , z ) T :

где теперь A равно 2 n × 3, а b равно 2 n × 1. Как и раньше, существует единственная точка пересечения тогда и только тогда, когда A имеет полный ранг столбца и расширенную матрицу [ A | b ] нет, и единственное пересечение, если оно существует, задается формулой

Ближайшие точки к наклонным линиям

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

В двух измерениях

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

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

Обратите внимание, что расстояние от точки x до линии определяется выражением

Итак, квадрат расстояния от точки x до линии равен

Сумма квадратов расстояний до многих линий - это функция стоимости :

Это можно изменить:

Чтобы найти минимум, продифференцируем по x и установим результат равным нулевому вектору:

так

так что

Более чем в двух измерениях

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

становится

где I - единичная матрица, и поэтому

Общее происхождение

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

Где: проекция на линию . Сумма расстояний от квадрата до всех линий равна:

Чтобы минимизировать это выражение, мы дифференцируем его по .

Результат:

Где единичная матрица. Это матрица с решением , где - псевдообратная величина .

Смотрите также

использованная литература

  1. ^ "Weisstein, Eric W." Line-Line Intersection. "From MathWorld" . Веб-ресурс Wolfram . Проверено 10 января 2008 .
  2. ^ Антонио, Франклин (1992). «Глава IV.6: Более быстрое пересечение отрезков линии». В Кирк, Дэвид (ред.). Графика Самоцветы III . Academic Press, Inc., стр. 199–202. ISBN 0-12-059756-X.
  3. ^ "Однородные координаты" . robotics.stanford.edu . Проверено 18 августа 2015 .
  4. ^ Траа, Йоханнес. "Пересечение линий методом наименьших квадратов" (PDF) . Проверено 30 августа 2018 года .

внешние ссылки