Пересечение двух линии в 3D?

Даны 2 линии в виде точек, х1,у1,z1 and х2,у2,z2
  • Вопрос задан
  • 837 просмотров
Пригласить эксперта
Ответы на вопрос 3
Griboks
@Griboks
Во-первых, это не точки, а вектора, либо одна линия.
Во-вторых, это не вопрос.
Ответ написан
Комментировать
x67
@x67
уравнение прямой выглядит так:
ax+by+cz=r,
где a,b,c,r - константы
Первым делом находишь коэффициенты для каждой линии. Это можно сделать, подставив известные точки и решив систему уравнений:
{ax1+by1+cz1=r, ax2+by2+cz2=r} (тут неизвестны величины a,b,c,r)
Повторяешь тоже самое для второй линии
Теперь имея уравнение для каждой прямой, решаешь их общую систему уравнений
{a1x+b1y+c1z=r, a2x+b2y+c2z=r} (тут неизвестными являются x,y,z - точка пересечения)
Стоит добавить, что линии могут не пересекаться или иметь бесконечное число пересечений - это надо учесть и проверить.
Упростить решение можно используя векторное представление и соответствующие библиотеки, но это уже ищи сам. Вот тут разжевано мат. описание прямой в векторном виде. На инглише, но это не страшно, все по картинкам можно понять.
Ответ написан
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Во первых, определите, что линии лежат на одной плоскости и не паралельны.
Обозначим точки первой прямой как A1 и B1, а второй - A2 и B2.

Введем вектора D1 = B1-A1 и D2 = B2-A2. Введем векторное уравнение.

D1*t + D2*r + (A1-A2) = 0.

Тут 2 неизвестные t и r, 3 уравнения (расписать по x, y и z).

Если система уравнений решается, то точка пересечения A1+D1*t или A2 - D2*r.

Тут правда предется повозиться со случаями. Надо попробовать решить систуму только для x, y, потом проверить в z. Если не получилось, то еще надо попробовать решить в x, z, потом поробовать подставить полученные r и t в у.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы