質問: ある点からある直線へ降ろした垂線の交点 3次元空間において、3点a,b,pがあったとします。 a,b,pの座標はそれぞれ既知で、a(xa,ya,za) b(xb,yb,zb) p(xp,yp,zp)と表わされる時に、 (1)線分abに対して点pから垂線を下ろすことが出来るかどうかの判定をするには? (2)垂線と線分との交点の座標を求めるには? 以上の2つのことを行いたいのです。 数学的知識に乏しいため、自力ではなかなか答えに辿り着くことが出来ません。 よろしくお願いします。
回答: >(1)線分abに対して点pから垂線を下ろすことが出来るかどうかの判定をするには? >(2)垂線と線分との交点の座標を求めるには? 両方とも同じですね。ベクトルで考えて見ます。 ベクトル↑ap=(xp-xa,yp-ya,zp-za),ベクトル↑ab=(xb-xa,yb-ya,zb-za)となります。 垂線の足をhとするとベクトル↑ah=k↑ab,↑ab・↑hp=0が成立します。 ↑hp=↑ap-↑ah=↑ap-k↑ab ↑ab・↑hp=↑ab・(↑ap-k↑ab)=↑ab・↑ap-k↑ab・↑ab=0 k=↑ab・↑ap/|↑ab|^2 成分で表記すると k={(xp-xa)(xb-xa)+(yp-ya)(yb-ya)+(zp-za)(zb-za)}/{(xb-xa)^2+(yb-ya)^2+(zb-za)^2} これを計算して0≦k≦1なら線分ab上に垂線の足hがきます。つまり、(1)を満足する ということです。また、kが求まればhの座標は h:(k*xb+(1-k)xa,k*yb+(1-k)ya,k*zb+(1-k)za) と定めることができます。