プロが教える店舗&オフィスのセキュリティ対策術

3次元空間に仮に次のような2直線があった場合の、お互いが再接近した場合の距離を求めたいのですが、解法がさっぱり思いつきません。

x = ( x2 - x1 )t + x1
y = ( y2 - y1 )t + y1
z = ( z2 - z1 )t + z1

a = ( a2 - a1 )t + a1
b = ( yb - b1 )t + b1
c = ( c2 - c1 )t + c1

いったん平面に直して考えたりする必要があるのでしょうか?
それとも微積が絡むとか。。 何かしら公式があるとうれしいのですが(笑

解法をご存じの方いらっしゃいましたら、よろしくお願いします。

A 回答 (3件)

> b = ( yb - b1 )t + b1



ん?これはミスタイプ?

b = ( b2 - b1 )t + b1

でしょうか。


2点
 <(x2-x1)t+x1, (y2-y1)t+y1,(z2-z1)t+z1>

 <(a2-a1)s+a1, (b2-b1)s+b1, (c2-c1)s+c1>
の距離の二乗をf(t,s)とすると

f(t,s) = ((x2-x1)t+x1-(a2-a1)s-a1)^2 +
     ((y2-y1)t+y1-(b2-b1)s-b1)^2 +
     ((z2-z1)t+z1-(c2-c1)s-c1)^2

です。で、連立方程式

∂f/∂t=0
∂f/∂s=0

を作ると、これはtとsに関する連立一次方程式になり、こいつを解いて、連立方程式を満たすt, sが決まります。これがfを最小にするt, sです。あとは√fを計算するだけ。

この回答への補足

この式は、

∂f/∂t=0

関数 f を t で微分する、という意味ですか?

補足日時:2002/06/16 21:07
    • good
    • 0

点A,Bが2直線上を自由に動く時、線分ABが最小になるのは、どんな場合でしょうか?これが分かれば、問題を解いていくことができます。

    • good
    • 1

簡単のため,以下のように取り直します.必要ならば読み替えて下さい.


直線
(x,y,z)=(a,b,c)t+(x0,y0,z0)
これは方向ベクトル→l=(a,b,c), tはパラメーター

(u,v,w)=(p,q,r)s+(u0,v0,w0)
これは方向ベクトル→m=(p,q,r), sはパラメーター
があったとすると
両直線に垂直なベクトル→nが「外積」"(→l)×(→m)" により得られる. (もちろん両者は平行でない場合と思っています.平行のときは自明ですね.)
以下, "→"を省略したりしてます.
ベクトルn=l×m=(br-cq, cp-ar, aq-bp)
であり, 同じ向きの単位ベクトルにして ベクトル k=n/|n|
が作れて,「正射影」の考えにより,
それぞれの直線上の点を, A(x0,y0,z0)とB(u0,v0,w0)とすれば,求める距離dは「ベクトルABのベクトルk上への正射影の絶対値」であり,
内積により
d=|(→AB)・(→k)|
です.

天下りに書けばこんなものでしょうが,結局はいくつかの概念を理解して公式を作るように筋を追えないと,使いこなせないかもしれません.
さもなくば,平凡にいくなら,パラメーター表示で2直線上にそれぞれ動点P,Qを取り,ベクトルPQとベクトルl,mがそれぞれ直交することより(内積0),2点P,Qを決定しPQの長さを求めるのが一番素直では?
    • good
    • 1

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