как показать что прямые пересекаются
Пересечение прямых. Точка пересечения двух прямых
Если точка M, является точкой пересечения двух прямых, то она должна принадлежать этим прямым, а ее координаты удовлетворять уравнения этих прямых.
Точка пересечения двух прямых на плоскости
Если система уравнений:
Решение: Для вычисления координат точки пересечения прямых, решим систему уравнений:
Вычтем из первого уравнения второе
Из первого уравнения найдем значение x
Подставим значение x во второе уравнение и найдем значение y
Решение: Для вычисления координат точки пересечения прямых, решим систему уравнений:
В первое уравнение подставим значения x и y из второго и третьего уравнений.
Подставим значение t во второе и третье уравнение
Решение: Для вычисления координат точки пересечения прямых, решим систему уравнений:
Из второго уравнения выразим y через x
Подставим y в первое уравнение
Решение: Обе прямые заданы уравнениями с угловым коэффициентом. Так как k 1 = k 2 = 2, то прямые параллельны. Так как эти прямые не совпадают то точек пересечения нет.
Решим также эту задачу используя систему уравнений:
Вычтем из первого уравнения второе
Ответ. Прямые не пересекаются (прямые параллельны).
Решение: Подставим координаты точки N в уравнения прямых.
Точка пересечения двух прямых в пространстве
Если система уравнений:
Решение: Составим систему уравнений
К шестому уравнению добавим пятое уравнение
Подставим значение b в четвертое и пятое уравнения
x = a + 1 y = a + 1 z = a + 1 a = 0 a = 0 b = 1 => x = 0 + 1 = 1 y = 0 + 1 = 1 z = 0 + 1 = 1 a = 0 a = 0 b = 1
Ответ. Прямые пересекаются в точке с координатами (1, 1, 1).
Решение: Составим систему уравнений заменив во втором уравнении параметр t на a
Подставим значение t из шестого уравнения в остальные уравнения
Нахождение точки пересечения двух прямых (и отрезков)
Введение
Довольно часто при разработке игр возникает необходимость находить точку пересечения прямых, отрезков, лучей и т.д. О том, как реализовать это максимально простым способом, в этой статье.
Популярные способы и их критика
Возможно, многие вспомнят способ из школьной алгебры — составить уравнения двух прямых, приравнять их правые части, найти x, и подставить его в уравнение прямой, чтобы найти y (Подробнее здесь).
Однако данный способ становится достаточно громоздким при написании кода (возможно поэтому вы сейчас читаете эту статью), к тому же, он не является универсальным: если одна из прямых параллельна оси Y, мы получим ошибку деления на ноль при вычислении углового коэффициента, и нам придётся прописать код на этот случай; если две прямые перпендикулярны осям, требуется повозиться с обработкой и этого случая. Такой код становится длинным и некрасивым.
В поисках более элегантного решения данной проблемы я наткнулся на весьма интересные способы, основанные на векторном умножении ( habr.com/ru/post/267037 ) и ray castinging’е ( ru.wikipedia.org/wiki/Ray_casting#Концепция ). Но на мой взгляд, они неоправданно сложные в вычислительном плане. Поэтому представляю вашему вниманию (и критике) мой способ.
Мой способ
Задача
Даны координаты двух отрезков. Нужно узнать, пересекаются ли отрезки, и если да, в какой точке. Для этой цели напишем функцию.
Решение
Условные обозначения для исключения недопониманий: a — вектор a, a(y) — проекция вектора a на ось Y, a
Представим наши отрезки в виде двух векторов: a
a(x)*k+b(x)*n=c(x)
a(y)*k+b(y)*n=c(y)
Наша задача сводится к нахождению этих коэффициентов (правда сказать, достаточно найти лишь один из них).
Внимательный читатель заметит, что при a(y)=0, мы получим ошибку. Пропишем ветвление на этапе нахождения a(y). Этот случай ещё проще, ведь мы сразу получаем уравнение с одной неизвестной.
Рекомендую попробовать вывести n самостоятельно, так будет понятнее, что откуда берётся в коде ниже.
Зная n, можно найти точку пересечения, для этого мы отнимем от координаты точки (x3,y3) вектор b*n
Собираем воедино
Данная функция принимает координаты вершин и возвращает значение 1, если прямые отрезков (именно прямые) пересекаются, иначе 0. Если же вам нужны координаты вершин, вы сможете взять их из массива dot[].
Важно: при введении двух совпадающих прямых, алгоритм выводит отсутствие пересечения. Алгоритм находит точку пересечения прямых, на которых лежат отрезки, поэтому точка может оказаться за пределами отрезка (что вам придётся дополнительно проверить в уже своём коде).
Точка пересечения двух прямых на плоскости
Пересечение прямых
Для создания компьютерных игр, программ математических графиков, расчетов движения объектов и т.п. очень часто требуется найти точку пресечения прямых. Сначала необходимо на бумаге вывести и упростить формулы вычисления и далее эти формулы перевести в программный код.
Прямые это бесконечные линии, поэтому на плоскости они всегда пересекаются. Если прямые не пересекаются значит они параллельны. Частные случаи поведения прямых на плоскости: прямые неопределенны, прямые параллельны, прямые совпадают, одна из прямых параллельна оси X или Y. Общие случаи «нормального» пересечения прямых и частные случаи учитываются в программном коде класса Intersections прикрепленного исходника.
Прямые пересекаются
Даны две прямые AB и CD расположенные на одной плоскости. Они пересекаются и необходимо найти точку пересечения. За основу берем классическое уравнение прямой и подставляя данные получаем систему уравнений для двух прямых.
Классическое уравнение прямой: Запишем уравнение в одну строчку: Вычислим коэффициенты и свободные члены: В итоге получаем уравнение прямой с коэффициентами:
Уравнение с линейными коэффициентами отличается от уравнения с угловым коэффициентом отсутствием операции деления. Минимум операций деления упрощает создание устойчивого программного кода.
Точка пересечения прямых
Координаты точки пересечения это числа которые являются решением для каждого из уравнений прямых. Решая систему из двух уравнений находим в какой точке пересекаются прямые AB и CD.
Подставляем известные данные: Получаем два уравнения: Решаем систему уравнений: Найдено, прямые пересекаются в точке с координатами:
Прямые параллельны
Если прямые параллельны и лежат друг от друга на расстоянии, то у них нет общих точек. Совместная система уравнений не имеет решений. Эти уравнения существуют как бы сами по себе. В точности как их параллельные прямые.
Две прямые могут полностью совпадать, в таком случае у них бесконечное количество общих точек. Совпадение прямых означает равность коэффициентов и свободных членов уравнений. Совпадающие прямые имеют идентичные уравнения.
Применяя формулу у.2 выведем уравнения прямых: Получаем систему уравнений:
Итог: система уравнений параллельных прямых не имеет решений.
Уравнение в программный код
На бумаге всё славненько, надо также сделать и в программном коде. Но программы не разбираются в уравнениях, им подавай переменные, постоянные и функции. Программный код не терпит неопределенности, он требует точные данные. Очень желательно строить выражения без операций деления. Преобразуем в программный код уравнение с коэффициентами (у.3) описанное выше. Для каждой прямой своё уравнение и переменные.
Точки определяющие прямые запишем в структуры Point. У каждой прямой две точки и они являются входными данными:
Определяем коэффициенты и свободные члены уравнений. Записываем их в соответствующие переменные:
Точка пересечения также будет храниться в структуре Point:
Вывод результата
Проверка параллельности и совпадения
Проверка на перпендикулярность
Класс Intersections
Исходник представляет собой два класса: класс вычисления точки пересечения прямых и информационный класс выдающий множество дополнительных сведений о свойствах исследуемых прямых.
Краткий листинг исходника дающий представление о структуре классов:
Применение класса Intersections
Класс class Intersections легко встраивается в любой исходный код. Точки определяющие прямые являются входными данными. На выходе получаем результат пересечения, координаты точки пересечения. Для дальнейшей обработки результатов можно использовать идентификатор свойства пересечения и дополнительную текстовую информацию.
Прикрепленный файл
Скачать исходник
Похожая тематика
Точка пересечения прямых в пространстве онлайн
С помощю этого онлайн калькулятора можно найти точку пересечения прямых в пространстве. Дается подробное решение с пояснениями. Для нахождения координат точки пересечения прямых задайте вид уравнения прямых («канонический» или «параметрический» ), введите коэффициенты уравнений прямых в ячейки и нажимайте на кнопку «Решить». Теоретическую часть и численные примеры смотрите ниже.
Предупреждение
Точка пересечения прямых в пространстве − теория, примеры и решения
1. Точка пересечения прямых в пространстве, заданных в каноническом виде.
Пусть задана декартова прямоугольная система координат Oxyz и пусть в этой системе координат заданы прямые L1 и L2:
, | (1) |
, | (2) |
Найти точку пересечения прямых L1 и L2 (Рис.1).
Запишем уравнение (1) в виде системы двух линейных уравнений:
Сделаем перекрестное умножение в уравнениях (3) и (4):
Откроем скобки и переведем переменные в левую часть уравнений а остальные элементы в правую часть:
Аналогичным образом преобразуем уравнение (2):
Запишем уравнение (2) в виде системы двух линейных уравнений:
Сделаем перекрестное умножение в уравнениях (7) и (8):
Откроем скобки и переведем переменные в левую часть уравнений а остальные элементы в правую часть:
Решим систему линейных уравнений (5), (6), (9), (10) с тремя неизвестными x, y, z. Для этого представим эту систему в матричном виде:
2. Точка пересечения прямых в пространстве, заданных в параметрическом виде.
Пусть задана декартова прямоугольная система координат Oxyz и пусть в этой системе координат заданы прямые L1 и L2 в параметрическом виде:
Задачу нахождения нахождения точки пересечения прямых L1 и L2 можно решить разными методами.
Метод 1. Приведем уравнения прямых L1 и L2 к каноническому виду.
Для приведения уравнения (12) к каноническому виду, выразим параметр t через остальные переменные:
Так как левые части уравнений (14) равны, то можем записать:
Аналогичным образом приведем уравнение прямой L2 к каноническому виду:
Далее, для нахождения точки пересечения прямых, заданных в каноническом виде нужно воспользоваться параграфом 1.
Метод 2. Для нахождения точки пересечения прямых L1 и L2 решим совместно уравнения (12) и (13). Из уравнений (12) и (13) следует:
Из каждого уравнения (17),(18),(19) находим переменную t. Далее из полученных значений t выбираем те, которые удовлетворяют всем уравнениям (17)−(19). Если такое значение t не существует, то прямые не пересекаются. Если таких значений больше одного, то прямые совпадают. Если же такое значение t единственно, то подставляя это зачение t в (12) или в (13), получим координаты точки пересечения прямых (12) и (13).
3. Точка пересечения прямых в пространстве, заданных в разных видах.
Если уравнения прямых заданы в разных видах, то можно их привести к одному виду (к каноническому или к параметрическому) и найти точку пересечения прямых, описанных выше.
4. Примеры нахождения точки пересечения прямых в пространстве.
Пример 1. Найти точку пересечения прямых L1 и L2:
Представим уравнение (20) в виде двух уравнений:
Сделаем перекрестное умножение в уравнениях (22) и (23):
Откроем скобки и переведем переменные в левую часть уравнений а остальные элементы в правую часть:
Аналогичным образом поступим и с уравнением (2).
Представим уравнение (2) в виде двух уравнений:
Сделаем перекрестное умножение в уравнениях (7) и (8)
Откроем скобки и переведем переменные в левую часть уравнений а остальные элементы в правую часть:
Решим систему линейных уравнений (24), (25), (28), (29) с тремя неизвестными x, y, z. Для этого представим эту систему в виде матричного уравнения:
Решим систему линейных уравнений (30) отностительно x, y, z. Для решения системы, построим расширенную матрицу:
Обозначим через aij элементы i-ой строки и j-ого столбца.
Первый этап. Прямой ход Гаусса.
Исключим элементы 1-го столбца матрицы ниже элемента a1 1. Для этого сложим строку 3 со строкой 1, умноженной на −1:
Исключим элементы 2-го столбца матрицы ниже элемента a22. Для этого сложим строку 4 со строкой 2, умноженной на −1/4:
Сделаем перестановку строк 3 и 4.
Второй этап. Обратный ход Гаусса.
Исключим элементы 3-го столбца матрицы выше элемента a33. Для этого сложим строку 2 со строкой 3, умноженной на −4/3:
Исключим элементы 2-го столбца матрицы выше элемента a22. Для этого сложим строку 1 со строкой 2, умноженной на 3/4:
Делим каждую строку матрицы на соответствующий ведущий элемент (если ведущий элемент существует):
Ответ. Точка пересечения прямых L1 и L2 имеет следующие координаты:
Пример 2. Найти точку пересечения прямых L1 и L2:
Приведем параметрическое уравнение прямой L1 к каноническому виду. Выразим параметр t через остальные переменные:
Из равентсв выше получим каноническое уравнение прямой:
Представим уравнение (33) в виде двух уравнений:
Сделаем перекрестное умножение в уравнениях (34 и (35):
Откроем скобки и переведем переменные в левую часть уравнений а остальные элементы в правую часть:
Аналогичным образом поступим и с уравнением (2).
Представим уравнение (2) в виде двух уравнений:
Сделаем перекрестное умножение в уравнениях (38) и (39)
Откроем скобки и переведем переменные в левую часть уравнений а остальные элементы в правую часть:
Решим систему линейных уравнений (36), (37), (40), (41) с тремя неизвестными x, y, z. Для этого представим эту систему в виде матричного уравнения:
Решим систему линейных уравнений (42) отностительно x, y, z. Для решения системы, построим расширенную матрицу:
Обозначим через aij элементы i-ой строки и j-ого столбца.
Первый этап. Прямой ход Гаусса.
Исключим элементы 1-го столбца матрицы ниже элемента a1 1. Для этого сложим строку 3 со строкой 1, умноженной на −1/6:
Исключим элементы 2-го столбца матрицы ниже элемента a22. Для этого сложим строки 3 и 4 со строкой 2, умноженной на 8/21 и −1/7, соответственно:
Из расширенной матрицы восстановим последнюю систему линейных уравнений:
Уравнение (43) несовместна, так как несуществуют числа x, y, z удовлетворяющие уравнению (43). Следовательно система линейных уравнений (42) не имеет решения. Тогда прямые L1 и L2 не пересекаются. То есть они или параллельны, или скрещиваются.
Для того, чтобы решить геометрическую задачу методом координат, необходима точка пересечения, координаты которой используются при решении. Возникает ситуация, когда требуется искать координаты пересечения двух прямых на плоскости или определить координаты тех же прямых в пространстве. Данная статья рассматривает случаи нахождения координат точек, где пересекаются заданные прямые.
Точка пересечения двух прямых – определение
Необходимо дать определение точкам пересечения двух прямых.
Определение точки пересечения прямых звучит так:
Точка, в которой пересекаются две прямые, называют их точкой пересечения. Иначе говоря, что точка пересекающихся прямых и есть точка пересечения.
Рассмотрим на рисунке, приведенном ниже.
Нахождение координат точки пересечения двух прямых на плоскости
Перед нахождением координат точки пересечения двух прямых, необходимо рассмотреть предлагаемый ниже пример.
Чтобы пересечение прямых было действительным, необходимо, чтобы координаты точки М 0 удовлетворяли уравнениям прямых. Это проверяется при помощи их подстановки. Получаем, что
Изобразим данное решение на координатной прямой рисунка, приведенного ниже.
Для решения задачи необходимо подставить координаты точки во все уравнения. Получим, что
Переходим к нахождению координат точек пересечения двух прямых при помощи заданных уравнений на плоскости.
Получившиеся числа являются координатами, которые необходимо было найти.
Поиск координат сводится к решению системы линейных уравнений. Если по условию дан другой вид уравнения, тогда следует привести его к нормальному виду.
Отсюда имеем, что координаты – это точка пересечения
Применим метод Крамера для нахождения координат:
Для полного понимания темы, необходимо знать некоторые нюансы.
Предварительно необходимо понять расположение прямых. При их пересечении мы найдем координаты, в других случаях решения существовать не будет. Чтобы не делать эту проверку, можно составлять систему вида A 1 x + B 1 y + C 1 = 0 A 2 x + B 2 + C 2 = 0 При наличии решения делаем вывод о том, что прямые пересекаются. Если решение отсутствует, то они параллельны. Когда система имеет бесконечное множество решений, тогда говорят, что они совпадают.
Следует собрать уравнения в систему для последующего решения:
Ответ: заданные уравнения определяют одну и ту же прямую.
По условию возможно такое, прямые не будут пересекаться. Необходимо составить систему уравнений и решать. Для решения необходимо использовать метод Гаусса, так как с его помощью есть возможность проверить уравнение на совместимость. Получаем систему вида:
Получили неверное равенство, значит система не имеет решений. Делаем вывод, что прямые являются параллельными. Точек пересечения нет.
Второй способ решения.
Для начала нужно определить наличие пересечения прямых.
Ответ: точек пересечения нет, прямые параллельны.
Для решения составляем систему уравнений. Получаем
Нахождения координат точки пересечения двух прямых в пространстве
Таким же образом находятся точки пересечения прямых пространства.
Когда точка М 0 является точкой пересечения прямых, тогда ее координаты должны быть решениями обоих уравнений. Получим линейные уравнения в системе:
A 1 x + B 1 y + C 1 z + D 1 = 0 A 2 x + B 2 y + C 2 z + D 2 = 0 A 3 x + B 3 y + C 3 z + D 3 = 0 A 4 x + B 4 y + C 4 z + D 4 = 0
Рассмотрим подобные задания на примерах.
Система вида A 1 x + B 1 y + C 1 z + D 1 = 0 A 2 x + B 2 y + C 2 z + D 2 = 0 A 3 x + B 3 y + C 3 z + D 3 = 0 A 4 x + B 4 y + C 4 z + D 4 = 0 имеет только одно решение. Значит, прямые a и b пересекаются.
В остальных случаях уравнение не имеет решения, то есть и общих точек тоже. То есть невозможно найти точку с координатами, так как ее нет.
Поэтому система вида A 1 x + B 1 y + C 1 z + D 1 = 0 A 2 x + B 2 y + C 2 z + D 2 = 0 A 3 x + B 3 y + C 3 z + D 3 = 0 A 4 x + B 4 y + C 4 z + D 4 = 0 решается методом Гаусса. При ее несовместимости прямые не являются пересекающимися. Если решений бесконечное множество, то они совпадают.
Можно произвести решение при помощи вычисления основного и расширенного ранга матрицы, после чего применить теорему Кронекера-Капелли. Получим одно, множество или полное отсутствие решений.
Очевидно, что система не имеет решений, значит прямые не пересекаются. Точки пересечения нет.
Ответ: нет точки пересечения.
Если прямые заданы при помощи кононических или параметрических уравнений, нужно привести к виду уравнений пересекающихся плоскостей, после чего найти координаты.
Задаем прямые уравнениями двух пересекающихся плоскостей. Получаем, что