- ベストアンサー
3次元座標の計算
任意の2本の直線の始点、終点の座標(x、y、z)がわかっているときその直線同士の最も接近した箇所のそれぞれの直線上の座標を計算する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いちばん簡単な求め方かどうかはわかりませんが、 過程1 まず、2直線を直線AB,直線CDとし、それぞれの方向ベクトルを n(ベクトル)、m(ベクトル)としておきます。 過程2 nとmの外積をとり、n×m=p(ベクトル)としておきます。 過程3 さらに、pとnの外積p×n=q(べクトル)をとります。 過程4 このqを法線ベクトルと直線ABを含む平面をもとめます。 過程5 次に、この平面と直線CDの交点を求めます。 この点が、直線ABに最接近する直線CD上の点です。 直線AB上の点は同様に求めるか、あるいは 過程6 直線AB上の点を適当にkなどを使ってあらわす。 過程7 三平方の定理を使って先ほど求めた点との距離をもとめて それが最小になるkを見つける。 (√の中kの2次式になるので、√の中だけを考える。 決して微分してみたりしない。時間の無駄。 まあ1度やってみるのもいいかも) 過程8 そのkから過程6であらわした直線AB上の点に代入する 距離も出したければ、過程7の式の最小値がそれですね。 kogorou100さんが聞きたいことは、こういう内容のことだと思いますが、 表現の問題として、始点・終点があれば、直線ではなく、線分、 片方だけあれば、半直線といいます。 線分や半直線の場合は求め方が、ちょっと複雑になります。 (基本的には、線分でも半直線でも考え方は一緒なので、以後すべて線分と 書きますが、それは、線分あるいは半直線を意味することとします。) それは、その始点あるいは終点が、最接近点になることもあるからです。 これは、大きくわけると3パターンが考えられ、 1つめは、上の過程5過程8で求めた点のどちらか(あるいは両方)が 対応する線分の始点あるいは終点に一致する場合 (この場合は上の求め方と同様なので、特に問題なし) 2つめは、過程5過程8で求めた点がともに、それぞれが対応する線分 の範囲内に入っていない場合 3つめは、過程5過程8で求めた点のそれぞれが(対応する)片方の線分 の範囲内には入っているが、もう片方の線分の範囲内の入って いない場合 2の場合は、過程5過程8の最接近点に近いほうの始点同士が、線分の最接近点 です。 3の場合は、過程5過程8の点が範囲からはずれたほうの線分の、始点(過程5 過程8の点に近いほう)が最接近点の1つで、もう1つは、その点 から他の線分への距離が最短になる点を求めればよいと思います。 どうでしょうか? ちなみに、外積はわかりますか? 2つのベクトル両方に直交するベクトルのことですが。 ご存知でなければ、補足します。
その他の回答 (1)
- Cake0530
- ベストアンサー率25% (3/12)
僕国語苦手なんで質問の意味がよく分からなかったんですが、2直線の最短距離がわかれば良いのかな? 外積をご存知なら外積を使えば1番早いと思います。ご存知でないなら、はじめに分かっている2本のベクトルをそれぞれa、bとして、a、bに共に直行するベクトルを内積で強引に出せば良いのでは?
お礼
どうもありがとうございます。質問の仕方が悪くて申し訳ございません。外積とか初めて聞くことばです。わたしにはレベルが高すぎるようですのでもう少し勉強してみます。
お礼
どうも有り難うございました。私には難しい内容ですが後は、図書館で調べてみます。最終的には上記のa、b、c、dの座標を入力すると接近する箇所の座標e、fをエクセルまたは日本語ベーシッックなどで求められる様にしたいと思います。