人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

3次元空間上の2本の線分間の最短距離を求め、その最短距離である線の両端の座標(2線分上のどの点を結ぶと最短となるか)を求める方法を教えて下さい。

●質問者: g-red
●カテゴリ:学習・教育
✍キーワード:3次元 空間
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● orokot
●20ポイント

http://b.hatena.ne.jp/keyword/URL%E3%81%AF%E3%83%80%E3%83%9F%E3%...

はてなブックマーク - URLはダミーです

線分上の任意の点P,Qを以下のように表す。A,Cは各線分の単位ベクトル、t,uはパラメータ、B,Dは各線分上の点とする。

P=At+B

Q=Cu+D


後は、|P-Q|=f(t,u)となる2変数関数fを作ってから、fが最小値となるt,uを求めればよいだけ。


数年ぶりに数学したので間違ってるかもしれません。この方法は力技以外の何者でもないです。


2 ● Z9M9Z
●20ポイント

http://www.mathematica.com/

Wolfram Research, Inc.

(X-P)=sAと(X-Q)=tBの直線(大文字はベクトル)とすると、2直線間の最短距離の直線はAxB(ベクトル積)の方向です。これをCとすると、最短距離はPを通る平面C(X-P)=0とQを通る平面C(X-Q)=0の距離と同じはずで、Cを単位ベクトルにとっておけば、C(rC+P-Q)=0を満たすr(の絶対値)が求める距離になる…はずです。


点の位置は、直線の一方をrCだけ並行移動した直線同士の交点を求めることになるはずです。


いまいち歯切れ悪くて申し訳ない。

◎質問者からの返答

ご回答ありがとうございます

まだ、使いなれてないもので、すいませんが、回答者1の方へのコメントも書かせていただきます。

回答者1の方へ

ご回答ありがとうございます。実はそれは私も考えました。私が考えたのは、AB上の任意の点P=At+Bと線分CDを含む平面へと座標を変換し、その平面上で2次元の点と直線の距離の公式を使い、点PとCDの最短距離(パラメータtを含む)を求め、このtを含む式の最小値を求めるをいうものです。最短距離の線の両端の座標は平面で考えたときに求め、座標を戻すというやり方です。しかし、tを含む最短距離の式が複雑になってしまい、他の方法を探しています。

回答者2の方へ

ご回答ありがとうございます。こちらは少し難しいですね。ちょっと式におこしてみます。


3 ● Z9M9Z
●20ポイント

http://www.cybernet.co.jp/matlab/

MATLAB:サイバネットシステム

申し訳ないです。やはりおぼつかなかった。訂正させてください。

各直線を(X-P)=sA, (X-Q)=tBとすると、各直線を含む法線ベクトルの等しい2平面を考えて、するとその単位法線ベクトルはC=AxBとなって、最短距離は|C(P-Q)|ですね。各平面に含まれる点を結ぶ線分の、法線ベクトル方向の成分がすなわち両平面の距離のはずですから。

◎質問者からの返答

ありがとうございます。

少し考えてみます

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ