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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/06/03 20:08:28
  • 終了:--

回答(3件)

id:orokot No.1

orokot回答回数10ベストアンサー獲得回数02005/06/04 00:44:21

ポイント20pt

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を求めればよいだけ。


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

id:Z9M9Z No.2

Z9M9Z回答回数343ベストアンサー獲得回数112005/06/04 18:59:53

ポイント20pt

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だけ並行移動した直線同士の交点を求めることになるはずです。


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

id:g-red

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

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

回答者1の方へ

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

回答者2の方へ

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

2005/06/04 22:31:59
id:Z9M9Z No.3

Z9M9Z回答回数343ベストアンサー獲得回数112005/06/05 02:46:15

ポイント20pt

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

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

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

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

id:g-red

ありがとうございます。

少し考えてみます

2005/06/06 16:56:35

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません