ボックスが球に衝突しているかどうかを確認する必要があります。私はx、y、z、幅、高さ、深さで定義されたBoundingBoxクラスを持っています。 x、y、z、radiusで定義されたBoundingSphereクラスもあります。交差するかどうかを確認する方法は?Box to Sphere Collision
答えて
説明したレベルでテストを続けたい場合は、幅、高さ、深さ= 2rの球の周囲にバウンディングボックスを配置できます。もちろん、これは、球上の「無極」または「非赤道」の点での衝突に対する誤検出のリスクを認めています。これを解決するには、これらの問題領域でのヒットテストの粒度を増やすために一連の階層バウンディングボックスを構築することを検討してください。
また、レンダリングレベルから問題に近づくこともあります。球をレンダリングすることはできないので、ある種の多角形メッシュが一般的に使用されます。 2D(または3D)ポリゴン間のヒットテストは簡単な方法です。
ニースが見つかりました。リンクは最新であり、複数のケースをカバーしています。ソリッドボックス、ソリッドスフェアのアルゴリズムは、ほとんどのゲームエンジンが(さまざまな最適化された形式で)使用してきたものです。 – Kaganar
球の中心からの距離に対して境界ボックスのすべてのコーナーをチェックするだけで済みます。
bool collidesWith(BoundingBox b, BoundingSphere s) {
for(Vertex v in b) {
if(distanceBetween(v, s.center) <= s.radius)
return true;
}
return false;
}
最初に確認するのは、BoundingSphereのBoundingBoxが交差しているかどうかです。その理由は、より複雑な数学を排除するのは非常に簡単な方法だからです。
次のステップは、境界ボックスの6つのプレーン(または12つの三角形)のそれぞれを取り、それらの点からポリゴンテストまでの距離を球の中心にすることです。それらの1つが球の半径よりも小さい場合は、ヒットします。ポリゴン・ツー・ポイントの距離について
MATLABコード:http://www.mathworks.com/matlabcentral/fileexchange/12744-distance-from-a-point-to-polygon
ジム・アルヴォにより、グラフィックス宝石の章があります。
URLに「arvo」と書かれているように、上の古いリンクは彼のコードを指していると思います。このlinkは動作します - 少なくとも今は。
- 1. parse float to text box
- 2. Ball to Ball Collision - 衝突時に大きな速度を得ます。
- 3. jQuery Collision
- 4. BitmapData Collision
- 5. UIPanGestureRecognizer Collision
- 6. JavaScript Collision
- 7. C++ SDL2/Scrolling Collision Issue
- 8. Allegro Circle Collision Detection
- 9. Pygame Collision interaction logical
- 10. Java OpenGL 3D Collision
- 11. NoClassDefFoundError:Web Sphereのリバティープロファイル
- 12. Unity3D Collision on Demand
- 13. Java Collision Detection
- 14. Java Snake Collision
- 15. アンギュラマテリアルとMaterializeCSS Collision
- 16. Python。 Pytest fixture collision
- 17. Pygame Collision not working
- 18. Mutliversion IKVM Collision
- 19. openSUSE RVM/Yast2 Collision?
- 20. Javascript canvas collision detection
- 21. MD5 uuid collision?
- 22. Wicket&jQuery Overlap/Collision
- 23. SKPhysicsBody Collision Not Working
- 24. Java-Shape Collision Detection
- 25. Socket.io with Three.js Sphere(OrbitControls)
- 26. WAS_HOME IBMのWeb SPHERE
- 27. Sphere関数を使用しないMatlab Sphereプロット
- 28. Pygame Collision Error Python 3
- 29. SKPhysicsContact not detected categoryBitMask Collision
- 30. collision ImageView in android studio
可能な重複:http://stackoverflow.com/questions/4578967/cube-sphere-intersection-test(「キューブ」と記されているが、答えはすべての軸に合わせたボックスに適用されます)。 –