• ベストアンサー

3Dプログラミングでは何故2直線の交点を「最近点」として求めるのでしょうか?

http://oshiete1.goo.ne.jp/qa74647.html?ans_count_asc=0 こちらの質問で、 >3D幾何計算ライブラリなどでは直線(線分)同士は、「交点」ではなく「最近点」として求めるのが普通です。 とありますが、何故なのでしょうか? 確かに色々調べてみますと、交点ではなく2直線の距離を求めて、その距離が一定の閾値以下なら交差している、というアルゴリズムが多く見つかりました。 小数が有限なために完全に交差することは殆どないから・・・でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> 小数が有限なために完全に交差することは殆どないから・・・でしょうか? 交差することは殆どないからですが、その理由は小数が有限だからでは無いです。 例えば、 ・X軸 ・相当に単純な図形である(1, 1, 1 )の単位立方体(?) の12本の線分でさえ、交差しない線分が7本もあります。 ちょっと平行移動、回転するだけで、ほとんどの辺が交差しなくなります。 2Dの世界なら、ほとんどの直線と直線は交差するんですが。 同様に、3Dの世界ではほとんどの平面と平面は交差します。 汎用的に利用されるライブラリでは、指定されたほとんどの直線が交差するだろうなどという都合の良い前提を出すと、実際に使い物にならなくなるからです。 例) ・0~2πの引数しか与えられないであろうcos関数 ・同じ値が入っている事は無いであろうソート関数 ・割る数にゼロは指定されないであろう割り算、剰余関数

axsies
質問者

お礼

回答ありがとうございます。 よく考えてみれば、交点を求める前に2直線が交差しているかを調べなければなりませんね。 交差しているかを調べて交点を求めるよりも、 2直線の距離を求めた方が手っ取り早いし、応用が利く・・・ という事でしょうか。

関連するQ&A