Този въпрос е задаван и преди във връзка с 2D. Този въпрос го разширява до 3D. Как да намеря перпендикулярна пресечна точка на права от точка в 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 (пресечна точка) = (ax1+bx2, ay1+by2, az1+bz2)
където:
P1 = (x1, y1, z1)
P2 = (x2, y2, z2)
P3 = (x3, y3, z3)
Ако знаете как да пресечете сфера с Line3D, можете да "раздуете" (раздуете) p3, като му дадете достатъчен радиус. След това пресечете Sphere с Line3D. Решението p4 е средата на двете пресечни точки по симетрия.