Этот вопрос задавался ранее в отношении 2D. Этот вопрос расширяет его до 3D. Как найти точку пересечения перпендикуляра на линии из точки в трехмерном пространстве ?. Если моя линия определяется точками (x1, y1, z1) & (x2, y2, z2) и у меня есть точка (x3, y3, z3) в пространстве. Как найти перпендикулярное пересечение точки (x4, y4, z4) на прямой из (x3, y3, z3)?
Перпендикулярная точка на линии от 3D-точки
Ответы (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.
Я сделал расчет:
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)
Если вы знаете, как пересекать Сферу с Line3D, вы можете «раздувать» p3, задав ему достаточный радиус. Затем пересеките Сферу с Line3D. Решение p4 является серединой двух точек пересечения по симметрии.