Перпендикулярная точка на линии от 3D-точки

Этот вопрос задавался ранее в отношении 2D. Этот вопрос расширяет его до 3D. Как найти точку пересечения перпендикуляра на линии из точки в трехмерном пространстве ?. Если моя линия определяется точками (x1, y1, z1) & (x2, y2, z2) и у меня есть точка (x3, y3, z3) в пространстве. Как найти перпендикулярное пересечение точки (x4, y4, z4) на прямой из (x3, y3, z3)?


person user1222017    schedule 20.02.2012    source источник
comment
Точный дубликат stackoverflow .com / questions / 9368436 /. Голосование закрыто.   -  person andand    schedule 21.02.2012
comment
Если это каким-то образом отличается от явно идентичного вопроса, который вы задали 43 минутами ранее, вам следует отредактировать этот вопрос, чтобы объяснить разницу, иначе он довольно скоро будет закрыт.   -  person AakashM    schedule 21.02.2012


Ответы (3)


Вы хотите найти P4 на строке P1, P2, т.е. P4=a*P1+b*P2 для некоторой ненулевой пары скаляров (a, b), такой, что P4-P3 ортогонален P2-P1. Это условие можно записать dot(P4-P3,P2-P1)=0. Заменив P4, вы получите a*dot(P1-P3,P2-P1)+b*dot(P2-P3,P2-P1)=0. Итак, вы можете взять:

a = dot(P2-P3,P2-P1)
b = -dot(P1-P3,P2-P1)

dot(u,v) - векторный скалярный продукт: сумма u_i v_i. Это работает в любом измерении, давая пересечение прямых P1, P2 перпендикулярной гиперплоскостью, содержащей P3.

person Eric Bainville    schedule 20.02.2012

Я сделал расчет:
a = (x3-x2) (x2-x1) + (y3-y2) (y2-y1) + (z3-z2) (z1 -z3)
b = - (x1-x3)
(x2-x1) - (y1-y3) (y2-y1) - (z1-z3) (z2 -z1)

P4 (точка пересечения) = (a x1 + b x2, a y1 + b y2, a z1 + b z2)
где:
P1 = (x1, y1, z1)
P2 = (x2, y2, z2)
P3 = (x3, y3, z3)

person daniel    schedule 28.05.2015

Если вы знаете, как пересекать Сферу с Line3D, вы можете «раздувать» p3, задав ему достаточный радиус. Затем пересеките Сферу с Line3D. Решение p4 является серединой двух точек пересечения по симметрии.

person pbierre    schedule 16.04.2016