Вы хотите найти 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.