2011-08-14 25 views
2

3Dで軸を揃えた軸が線分(線ではない)と交差するかどうかを教えてください。私は交差点を必要としません。シンプルな3D AABB線分の衝突検出(交差点)

ボックスが2対角によって定義され、その始点と終点によって線分が、このような何か:

Boolean intersection(Vector3 boxStart, Vector3 boxEnd, Vector3 segmentStart, Vector3 segmentEnd){...} 

は、私は多くの研究を行ってきた、と見つけることができたhaventは私が理解できる、または少なくとも使用するコード(C#またはJavaでうまくいけば)。私はその方法を必要とし、仕事をするライブラリではありません...

私の問題は100%正確である必要があり、セグメントがちょうどボックスに触れる(すなわち、それらが1つのポイントを共有する)場合、それはfalseを返す必要があります。たとえば、セグメントがボックスの辺の1つであるか、またはコーナーを通過する場合、それらは交差しません。 Javaでは

+1

http://www.gamedev.net/topic/338987-aabb---line-segment-intersection-test/。 「ちょうど感動する」ケースを除外するには、「<' and '>」テストを使用してください。それらを含める場合は、 '<=' and '> ='テストを使用してください。 –

+0

@Merlyn私がそれについて理解できない唯一の事はイプシロンです。私はそれを見つけましたが、それは100%正確ではないと私には思われます、そして、私は使用するεを知りません... – Nicolas

+0

"イプシロンは、セグメントがほぼ平行であるボックス軸。 - 多くのサイクルを無駄にせずに退化した症例を検出できれば、イプシロンの使用を避けることができます。 –

答えて

2

おかげで、intersects()のいずれかの方法が候補です。実装上の制限により、Line2Dでテストする必要があります。

+0

ええ、それは2Dで...私は3Dのためにそれをどのように使用しますか? – Nicolas

+0

ああ、私がオリジナルを研究している間、[質問は変わった](http://stackoverflow.com/posts/7054210/revisions)。私は他の役に立つ答えがなぜ削除されたのか疑問に思いました。選択した3Dライブラリに関連するプリミティブがありますか? – trashgod

+0

私は本当に3Dライブラリがなく、いくつかのクラスと基本的なメソッドがあります。 – Nicolas