Как найти точка пересечения
Перейти к содержимому

Как найти точка пересечения

  • автор:

Нахождение точки пересечения двух прямых (и отрезков)

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

image

Популярные способы и их критика

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

Однако данный способ становится достаточно громоздким при написании кода (возможно поэтому вы сейчас читаете эту статью), к тому же, он не является универсальным: если одна из прямых параллельна оси Y, мы получим ошибку деления на ноль при вычислении углового коэффициента, и нам придётся прописать код на этот случай; если две прямые перпендикулярны осям, требуется повозиться с обработкой и этого случая. Такой код становится длинным и некрасивым.

В поисках более элегантного решения данной проблемы я наткнулся на весьма интересные способы, основанные на векторном умножении ( habr.com/ru/post/267037 ) и ray castinging’е ( ru.wikipedia.org/wiki/Ray_casting#Концепция ). Но на мой взгляд, они неоправданно сложные в вычислительном плане. Поэтому представляю вашему вниманию (и критике) мой способ.

Мой способ

Задача

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

Решение

image

Условные обозначения для исключения недопониманий: a — вектор a, a(y) — проекция вектора a на ось Y, a — вектор a, заданный координатами x1,y1.

Представим наши отрезки в виде двух векторов: a и b. Обратите, внимание, что вектор b имеет противоположное от ожидаемого направление. Введём вектор c. Заметим, что a*k+b*n=c, где k,n — некоторые коэффициенты. Таким образом, получаем систему уравнений:

a(x)*k+b(x)*n=c(x)
a(y)*k+b(y)*n=c(y)
Наша задача сводится к нахождению этих коэффициентов (правда сказать, достаточно найти лишь один из них).

Предлагаю домножить обе части нижнего уравнения на q= -a(x)/a(y). Так после сложения двух уравнений, мы сразу избавимся от k. Нахождение n сведётся к решению обыкновенного линейного уравнения. Важно обратить внимание, что у n может не быть решения.

Внимательный читатель заметит, что при a(y)=0, мы получим ошибку. Пропишем ветвление на этапе нахождения a(y). Этот случай ещё проще, ведь мы сразу получаем уравнение с одной неизвестной.

Рекомендую попробовать вывести n самостоятельно, так будет понятнее, что откуда берётся в коде ниже.

Зная n, можно найти точку пересечения, для этого мы отнимем от координаты точки (x3,y3) вектор b*n

Собираем воедино

float dot[2]; // точка пересечения bool cross(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) < float n; if (y2 - y1 != 0) < // a(y) float q = (x2 - x1) / (y1 - y2); float sn = (x3 - x4) + (y3 - y4) * q; if (!sn) < return 0; >// c(x) + c(y)*q float fn = (x3 - x1) + (y3 - y1) * q; // b(x) + b(y)*q n = fn / sn; > else < if (!(y3 - y4)) < return 0; >// b(y) n = (y3 - y1) / (y3 - y4); // c(y)/b(y) > dot[0] = x3 + (x4 - x3) * n; // x3 + (-b(x))*n dot[1] = y3 + (y4 - y3) * n; // y3 +(-b(y))*n return 1; >

Данная функция принимает координаты вершин и возвращает значение 1, если прямые отрезков (именно прямые) пересекаются, иначе 0. Если же вам нужны координаты вершин, вы сможете взять их из массива dot[].

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

int main() < if (cross(1,1,7,2, 7,3,5,6)) < std::cout else < std::coutreturn 0; >

Послесловие

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

Как найти точку пересечения плоскости и прямой

gift

1. Найти точку пересечения плоскости \(x-2y+3z-8=0\) с прямой, заданной общими уравнениями:

.

Решение сводится к решению системы трех уравнений с тремя неизвестными:

2. Найти точку пересечения плоскости \(x+y+3z-1=0\) с прямой, заданной каноническими уравнениями:

Можно было бы перейти от канонических уравнений к общему виду и свести задачу к рассмотренной в предыдущем примере. Но можно рассуждать и по-другому. Точка пересечения должна принадлежать и прямой, и плоскости, то есть можно подставить выражения для x,y и z из канонического уравнения в уравнение плоскости и определить их.

1) Перейдем к параметрическим уравнениям прямой:

2) Подставим найденные выражения в уравнение плоскости:

\((t-1)+(t+2)+3*2t-1=0\) , откуда t=0

3) Подставляем в выражения для x,y,z, находим ответ: x=-1, y=2, z=0.

Ответ: искомая точка M(-1;2;0).

Дарим в подарок бесплатный вводный урок!

gift

Репетиторы
  • rhombusРепетитор по математике
  • rhombusРепетитор по физике
  • rhombusРепетитор по химии
  • rhombusРепетитор по русскому языку
  • rhombusРепетитор по английскому языку
  • rhombusРепетитор по обществознанию
  • rhombusРепетитор по истории России
  • rhombusРепетитор по биологии
  • rhombusРепетитор по географии
  • rhombusРепетитор по информатике
Специализация
  • rhombusПодготовка к ЕГЭ по математике (базовый уровень)
  • rhombusРепетитор для подготовки к ОГЭ по физике
  • rhombusПодготовка к олимпиадам по физике
  • rhombusРепетитор по английскому языку для подготовки к ЕГЭ
  • rhombusАнглийский язык для начинающих
  • rhombusРепетитор по грамматике английского языка
  • rhombusРепетитор по разговорному английскому
  • rhombusВПР по физике
  • rhombusРепетитор по биологии для подготовки к ЕГЭ
  • rhombusРепетитор по информатике для подготовки к ЕГЭ
Предметы по класам
  • rhombus1 класс
  • rhombus2 класс
  • rhombus3 класс
  • rhombus4 класс
  • rhombus5 класс
  • rhombus6 класс
  • rhombus7 класс
  • rhombus8 класс
  • rhombus9 класс
  • rhombus10 класс
  • rhombus11 класс
  • rhombusНе школьник

Как найти точку пересечения с осью Y

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

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

Количество просмотров этой статьи: 59 447.

В этой статье:

Точка пересечения с осью Y – это точка, в которой график функции пересекает ось ординат. Найти такую точку можно несколькими способами, в зависимости от начальной информации.

Метод 1 из 3:

По угловому коэффициенту и точке

Step 1 Запишите значение углового коэффициента и координаты точки.

  • Пример 1. Дана прямая, на которой лежит точка А (3,4) и угловой коэффициент которой равен 2. Найдите точку пересечения этой прямой с осью Y.

Step 2 Запишите линейную функцию.

Запишите линейную функцию. Ее график представляет собой прямую. Линейная функция имеет вид у = kх + b, где k – угловой коэффициент, b – координата «у» точки пересечения с осью Y.

Step 3 В функцию подставьте значение углового коэффициента.

  • Пример 1. y = kx + b
    k = 2
    y = 2x + b

Step 4 Вместо «х» и «у» подставьте данные координаты точки.

  • Пример 1. Точка А (3,4) лежит на прямой. То есть х = 3, у = 4.
    Подставьте эти значения в y = 2x + b
    4 = 2*3 + b

Step 5 Найдите значение b.

  • Пример 1. 4 = 2*3 + b
    4 = 6 + b
    4 — 6 = b
    -2 = b
    Координата «у» точки пересечения с осью Y равна -2 (у = -2).

Step 6 Ответ запишите в.

  • Пример 1. Точка пересечения прямой с осью Y имеет координаты (0,-2).

Метод 2 из 3:

По координатам двух точек

Step 1 Запишите координаты двух точек, лежащих на прямой.

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

Step 2 Пример 2

Пример 2. Прямая проходит через точки А(1,2) и В(3,-4). Найдите точку пересечения этой прямой с осью Y.

Step 3 Найдите вертикальное и.

  • Вертикальное расстояние – это разность координат «у» двух точек.
  • Горизонтальное расстояние – это разность координат «х» двух точек.
  • Пример 2. Координаты «у» двух точек: 2 и -4, поэтому вертикальное расстояние: -4 — 2 = -6.
    Координаты «х» двух точек (в том же порядке): 1 и 3, поэтому вертикальное расстояние: 3 — 1 = 2.

Step 4 Разделите вертикальное расстояние.

  • Пример 2. k = -6/2 = -3.

Step 5 Запишите линейную функцию.

Запишите линейную функцию. Ее график представляет собой прямую. Линейная функция имеет вид у = kх + b, где k – угловой коэффициент, b – координата «у» точки пересечения с осью Y. Подставьте известное значение углового коэффициента k и координаты точки (х,у), чтобы найти b.

Step 6 В функцию подставьте.

  • Пример 2. y= kх + b
    k = -3, поэтому у = -3x + b
    На прямой лежит точка А (1,2), поэтому 2 = -3*1 + b.

Step 7 Найдите значение b.

  • Пример 2. 2 = -3*1 + b
    2 = -3 + b
    5 = b
    Координаты точки пересечения прямой с осью Y равны (0,5).

Координаты точки пересечения прямой и плоскости — примеры нахождения

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

Точка пересечения прямой и плоскости – определение

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

Существует несколько вариаций расположения прямой относительно плоскости и пространства:

  • прямая лежит в плоскости;
  • прямая параллельна плоскости;
  • прямая пересекает плоскость.

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

Нахождение координат точки пересечения прямой и плоскости

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

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

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

Вычислить, может ли точка М 0 с координатами — 2 , 3 , — 5 являться точкой пересечения прямой x + 3 — 1 = y — 3 = z + 2 3 с плоскостью x — 2 y — z + 3 = 0 .

Когда точка принадлежит некоторой прямой, координаты точки пересечения являются решением обоих уравнения. Из определения имеем, что при пересечении образуется общая точка. Для решения задания необходимо подставить в оба уравнения координаты точки М 0 и вычислить. Если она является точкой пересечения, то оба уравнения будут соответствовать.

Представим координаты точки — 2 , 3 , — 5 и получим:

— 2 + 3 — 1 = 3 — 3 = — 5 + 2 3 ⇔ — 1 = — 1 = — 1 — 2 — 2 · 3 — ( — 5 ) + 3 = 0 ⇔ 0 = 0

Так как получаем верные равенства, делаем вывод, что точка М 0 — точка пересечения заданной прямой с плоскостью.

Ответ: заданная точка с координатами является точкой пересечения.

Если координаты точки пересечения являются решением обоих уравнений, то они пересекаются.

Первый способ нахождения координат пересечения прямой и плоскости.

Когда задается прямая a с плоскостью α прямоугольной системы координат, известно, что они пересекаются в точке М 0 . Для начала займемся поиском координат заданной точки пересечения при заданном уравнении плоскости, имеющего вид A x + B y + C z + D = 0 с прямой линией a , являющейся пересечением плоскостей 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 и плоскости α должны удовлетворять обоим уравнениям. Таким образом задается система линейных уравнений, имеющая вид

A x + B y + C z + D = 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

Решение системы подразумевает обращение каждого тождества в верное равенство. Следует отметить, что при таком решении мы определяем координаты пересечения 3 плоскостей вида A x + B y + C z + D = 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 . Для закрепления материала рассмотрим решение данных задач.

Прямая задана уравнением двух пересекающихся плоскостей x — y + 3 = 0 5 x + 2 z + 8 = 0 , причем пересекает еще одну 3 x — z + 7 = 0 . Необходимо найти координаты точки пересечения.

Необходимые координаты получим при составлении и решении системы, имеющей вид x — y + 3 = 0 5 x + 2 z + 8 = 0 3 x — z + 7 = 0 .

Следует обратить внимание на тему решения систем линейных уравнений.

Возьмем систему уравнений вида x — y = — 3 5 x + 2 z = — 8 3 x — z = — 7 и произведем вычисления по определителю основной матрицы системы. Получаем, что

∆ = 1 — 1 0 5 0 2 3 0 — 1 = 1 · 0 · ( — 1 ) + ( — 1 ) · 2 · 3 + 0 · 5 · 0 — 0 · 0 · 3 — 1 · 2 · 0 — ( — 1 ) · 5 · ( — 1 ) = — 11

Так как определитель матрицы не равен нулю, система имеет только одно решение. Для этого мы применим метод Крамера. Он считается очень удобным и подходящим для данного случая.

∆ x = — 3 — 1 0 — 8 0 2 — 7 0 — 1 = ( — 3 ) · 0 · ( — 1 ) + ( — 1 ) · 2 · ( — 7 ) + 0 · ( — 8 ) · 0 — — 0 · 0 · ( — 7 ) — ( — 3 ) · 2 · 0 — ( — 1 ) · ( — 8 ) · ( — 1 ) = 22 ⇒ x = ∆ x ∆ = 22 — 11 = — 2 ∆ y = 1 — 3 0 5 — 8 2 3 — 7 — 1 = 1 · ( — 8 ) · ( — 1 ) + ( — 3 ) · 2 · 3 + 0 · 5 · ( — 7 ) — — 0 · ( — 8 ) · 3 — 1 · 2 · ( — 7 ) — ( — 3 ) · 5 · ( — 1 ) = — 11 ⇒ y = ∆ y ∆ = — 11 — 11 = 1 ∆ z = 1 — 1 — 3 5 0 — 8 3 0 — 7 = 1 · 0 · ( — 7 ) + ( — 1 ) · ( — 8 ) · 3 + ( — 3 ) · 5 · 0 — — ( — 3 ) · 0 · 3 — 1 · ( — 8 ) · 0 — ( — 1 ) · 5 · ( — 7 ) = — 11 ⇒ z = ∆ z ∆ = — 11 — 11 = 1

Отсюда следует, что координаты точки пересечения заданной прямой и плоскости имеет значение ( — 2 , 1 , 1 ) .

Ответ: ( — 2 , 1 , 1 ) .

Система уравнений вида A x + B y + C z + D = 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 определена такими уравнениями, как 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 x + B y + C z + D = 0 , то они пересекаются. Когда прямая лежит в плоскости, система выдает бесконечное множество решений. При их параллельности уравнение решений не имеет, так как нет общих точек пересечения.

Найти точку пересечения прямой z — 1 = 0 2 x — y — 2 = 0 и плоскости 2 x — y — 3 z + 1 = 0 .

Заданные уравнения необходимо преобразовать в систему z — 1 = 0 2 x — y — 2 = 0 2 x — y — 3 z + 1 = 0 . Когда она будет иметь единственное решение, то получим искомые координаты пересечения в точке. При условии, если нет решений, то они параллельны, либо прямая лежит в этой же плоскости.

Получим, что основная матрица системы – A = 0 0 1 2 — 1 0 2 — 1 — 3 , расширенная – T = 0 0 1 1 2 — 1 0 2 2 — 1 — 3 — 1 . Нам необходимо определить ранг матрицы A и T методом Гаусса:

1 = 1 ≠ 0 , 0 1 — 1 0 = 1 ≠ 0 , 0 0 1 2 — 1 0 2 — 1 — 3 = 0 , 0 1 1 — 1 0 2 — 1 — 3 — 1 = 0

Тогда получим, что ранг основной матрицы равен рангу расширенной. Применим теорему Кронекера-Капелли, отсюда видно, что у системы есть бесконечное множество решений. Получим, что прямая z — 1 = 0 2 x — y — 2 = 0 принадлежит плоскости 2 x — y — 3 z + 1 = 0 , что говорит об их невозможности пересечения и наличии общей точки.

Ответ: нет координат точки пересечения.

Задано пересечение прямой x + z + 1 = 0 2 x + y — 4 = 0 и плоскости x + 4 y — 7 z + 2 = 0 , найти координаты точки пересечения.

Необходимо собрать заданные уравнения в систему вида x + z + 1 = 0 2 x + y — 4 = 0 x + 4 y — 7 z + 2 = 0 . Для решения применяем метод Гаусса. С его помощью мы определим все имеющиеся решения коротким путем. Для этого запишем

x + z + 1 = 0 2 x + y — 4 x + 4 y — 7 z + 2 = 0 ⇔ x + z = — 1 2 x + y = 4 x + 4 y — 7 z = — 2 ⇔ ⇔ x + z = — 1 y — 2 z = 6 4 y — 8 z = — 1 ⇔ x + z = — 1 y — 2 z = 6 0 = — 25

Применив метод Гауса, стало понятно, что равенство неверное, так как система уравнений решений не имеет.

Делаем вывод, что прямая x + z + 1 = 0 2 x + y — 4 = 0 с плоскостью x + 4 y — 7 z + 2 = 0 не имеют пересечений. Отсюда следует, что невозможно найти координаты точки, так как они не пересекаются.

Ответ: нет точек пересечения, так как прямая параллельна плоскости.

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

Второй способ нахождения точки начинается с задания прямой a , пересекающей плоскость α в точке М 0 . Необходимо найти координаты заданной точки пересечения при заданном уравнении плоскости A x + B y + C z + D = 0 . Прямую а определяем параметрическими уравнениями, имеющими вид x = x 1 + a x · λ y = y 1 + a y · λ z = z 1 + a z · λ , λ ∈ R .

Когда в уравнение A x + B y + C z + D = 0 производится подстановка x = x 1 + a x · λ , y = y 1 + a y · λ , z = z 1 + a z · λ , выражение примет вид уравнения с неизвестной λ . Необходимо разрешить его относительно λ , тогда получим λ = λ 0 , которое соответствует координатам точки, в которой они пересекаются. Вычисление координат точки производится из x = x 1 + a x · λ 0 y = y 1 + a y · λ 0 z = z 1 + a z · λ 0 .

Подробнее этот способ будет рассмотрен на примерах, приведенных ниже.

Найти координаты точки пересечения прямой x = — 1 + 4 · λ y = 7 — 7 · λ z = 2 — 3 · λ , λ ∈ R с плоскостью x + 4 y + z — 2 = 0 .

Для решения системы, необходимо произвести подстановку. Тогда получаем, что

— 1 + 4 · λ + 4 · 7 — 7 · λ + 2 — 3 · λ — 2 = 0 ⇔ — 27 · λ + 27 = 0 ⇔ λ = 1

Найдем координаты точки пересечения плоскости с прямой, используя параметрические уравнения, со значением λ = 1 .

x = — 1 + 4 · 1 y = 7 — 7 · 1 z = 2 — 3 · 1 ⇔ x = 3 y = 0 z = — 1

Ответ: ( 3 , 0 , — 1 ) .

Когда прямая вида x = x 1 + a x · λ y = y 1 + a y · λ z = z 1 + a z · λ , λ ∈ R принадлежит плоскости A x + B y + C z + D = 0 , тогда необходимо подставить туда уравнение плоскости выражения x = x 1 + a x · λ , y = y 1 + a y · λ , z = z 1 + a z · λ , тогда получим тождество такого вида 0 ≡ 0 . При параллельности плоскости и прямой получаем неверное равенство, так как нет точек пересечения.

Если прямая задана каноническим уравнением, имеющим вид x — x 1 a x = y — y 1 a y = z — z 1 a z , тогда необходимо переходить от канонических к параметрическим при поиске координат точки пересечения прямой с плоскостью A x + B y + C z + D = 0 , то есть получим x — x 1 a x = y — y 1 a y = z — z 1 a z ⇔ x = x 1 + a x · λ y = y 1 + a y · λ z = z 1 + a z · λ и применим необходимы способ для нахождения координат точки пересечения заданной прямой и плоскости в пространстве.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *