プロが教えるわが家の防犯対策術!

直交座標に関して、
点(x[0],y[0],z[0])と、
パラメータtの直線(x,y,z)=(a,b,c)+t(p,q,r)との距離は、

L=√[{(q^2+p^2)*z[0]^2
+2(-qr*y[0]-pr*x[0]+bqr+apr-cq^2-cp^2)z[0]
+(r^2+p^2)y[0]^2+2(-pqx[0]-br^2+cqr+apq-bp^2)y[0]
+(r^2+q^2)x[0]^2+2(-ar^2+cpr-aq^2+bpq)x[0]
+(b^2+a^2)r^2+2(-bq-ap)cr+(c^2+a^2)q^2-2abpq+(c^2+b^2)p^2}
/(r^2+q^2+p^2)]

とかけるようなのですが、どのように導けばよいのでしょうか?
計算が複雑すぎて、いい方針が立ちません。

A 回答 (2件)

計算を簡単にしたいのであれば、


ベクトルで計算すればよいのでは?

点(x[0],y[0],z[0])と直線上の点(x,y,z)の距離をL(t)とかくと、
L(t)^2=|(x,y,z)-(x[0],y[0],z[0])|^2
=|(a,b,c)-(x[0],y[0],z[0])+t(p,q,r)|^2
です。L(t)が最小になるのは、tが
((a,b,c)-(x[0],y[0],z[0])+t(p,q,r))・(p,q,r)=0 (・は内積)
を満たす場合。そのときのtの値は、
t=-((a,b,c)-(x[0],y[0],z[0]))・(p,q,r) / |(p,q,r)|^2
です。このときのL(t)がご質問のLの式になります。
    • good
    • 3

ベタにやっちゃいましょう。


点Pから直線に垂線を下ろし、その足をHとするとHの位置ベクトルは
H=(a+pt,b+qt,c+rt)と表せます。
PHベクトルと直線の方向ベクトル(p,q,r)が垂直であることから
(a+pt-x0,b+qt-y0,c+rt-z0)・(p,q,r)=0
ここからtを求め、PHベクトルに代入して|PH|を求めれば完成です。
あと、きちんと展開していないので質問欄の式と自分の答えが合っている確証はもてませんが、質問欄に書いてある答えまで展開すると返ってわかりにくい気がしました。
私の場合x0-a=X,y0-b=Y,z0-c=Zと置くと、次のようになりました。
L=√[{(q^2+r^2)X^2+(r^2+p^2)Y^2+(p^2+q^2)Z^2-2(pqXY+qrYZ+rpZX)}/(p^2+q^2+r^2)]
こうすると定点と、直線が通る一点との関係が明確に式に表れ、覚えやすいと思います。
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!