找出一個軸對齊的矩形是否與一個旋轉的矩形發生碰撞,最有效的方法是什麼?每個類都有一個位置矢量和一個大小矢量,旋轉的類有一個角度值。旋轉矩形碰撞
Q
旋轉矩形碰撞
3
A
回答
5
你想使用分離軸定理(SAT)。通常它用在3d中,但它很好地摺疊到2d。既然你已經有了一個特殊的情況下,你需要考慮的唯一軸線是你的矩形的4個主要軸線:
[ 1,0 ] [ 0,1 ] [ sin(theta), cos(theta) ] [ -cos(theta), sin(theta) ]
要檢查一個軸,計算與軸每個頂點的點積。然後檢查兩組值的最小值和最大值,看它們是否重疊。如果4軸中的任何一個給出不重疊的範圍,則矩形不重疊(您已經找到了分離軸)。如果所有4軸都顯示重疊,則矩形相交。
這裏有一個同樣的問題最近SO問題: Separating Axis Theorem and Python
這裏是維基百科的文章
3
最有效的方法是創建一個更大的矩形,它限制旋轉的矩形,並基於邊界矩形執行碰撞檢測。
這意味着邊界矩形衝突並不表示「點擊」,而是需要進一步調查的條件。調查手段根據您可以做出的假設而有所不同。在最簡單的情況下,您可以使用AND像素檢查真實輸出。
然後,您可以使用此「已確認」命中以更復雜的模型進行分析;考慮到碰撞的角度,速度,幾何形狀和彈性(或者你感興趣的任何東西)。
存在更復雜的模型,但通常更復雜的模型需要更多的計算能力。通過設置一系列快速,快速的檢查來節省您的計算能力會更容易,並且只會爲需要付清的情況帶來沉重的計算週期。
相關問題
- 1. 2D旋轉矩形碰撞
- 2. Java - 旋轉矩形碰撞
- 3. 與旋轉矩形的碰撞
- 4. 碰撞檢測旋轉矩形
- 5. 碰撞檢測在旋轉矩形
- 6. 帶旋轉矩形的碰撞檢測
- 7. C#XNA 4.0矩形旋轉碰撞
- 8. 圈旋轉矩形碰撞檢測
- 9. 旋轉矩形碰撞處理
- 10. 使用libgdx碰撞旋轉矩形?
- 11. 矩形碰撞
- 12. Pygame矩形碰撞
- 13. Box2D矩形碰撞
- 14. 兩個旋轉矩形之間的java碰撞檢測
- 15. SpriteKit PhysicsBody非矩形碰撞
- 16. Sprite與矩形碰撞
- 17. 矩形棱鏡碰撞
- 18. LibGdx中的矩形碰撞
- 19. 矩形物理和碰撞
- 20. 圓和矩形碰撞
- 21. Libgdx矩形牆碰撞
- 22. 碰撞檢測Libgdx矩形
- 23. 多個矩形碰撞
- 24. 矩形之間的碰撞
- 25. 旋轉的碰撞邊界
- 26. SdlDotNet平臺遊戲:碰撞矩形A(玩家)碰撞矩形B(等級)
- 27. 矩形和圓形之間的碰撞
- 28. 矩形和圓形碰撞檢測
- 29. 圓形和矩形碰撞Android
- 30. 圓形與矩形之間的碰撞
你正在尋找的重疊,還是一個真正有關聯的速度它? – phkahler 2011-06-02 17:16:15
只是靜態重疊。 – Matt 2011-06-02 17:22:15