找出一个轴对齐的矩形是否与一个旋转的矩形发生碰撞,最有效的方法是什么?每个类都有一个位置矢量和一个大小矢量,旋转的类有一个角度值。旋转矩形碰撞
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. 碰撞检测在旋转矩形
- 3. 使用libgdx碰撞旋转矩形?
- 4. 带旋转矩形的碰撞检测
- 5. 旋转矩形碰撞处理
- 6. 碰撞检测旋转矩形
- 7. Box2D矩形碰撞
- 8. Pygame矩形碰撞
- 9. 两个旋转矩形之间的java碰撞检测
- 10. 碰撞检测旋转矩形与协调数学
- 11. 圆和矩形碰撞
- 12. Sprite与矩形碰撞
- 13. 矩形棱镜碰撞
- 14. 碰撞检测Libgdx矩形
- 15. 矩形物理和碰撞
- 16. 多个矩形碰撞
- 17. 旋转的碰撞边界
- 18. SdlDotNet平台游戏:碰撞矩形A(玩家)碰撞矩形B(等级)
- 19. 圆形与矩形之间的碰撞
- 20. 圆形和矩形碰撞Android
- 21. Java游戏碰撞检测,(侧面碰撞)与矩形
- 22. 使用fillrect()创建的矩形可以进行旋转和碰撞吗?-j2me
- 23. 旋转矩形?
- 24. Android - 通过矩阵旋转后设置位图碰撞检测
- 25. 加工中的高级矩形碰撞
- 26. 边界矩形碰撞测试?
- 27. ActionScript 3.0中的矩形碰撞检测?
- 28. AS3二维矩形碰撞阻塞
- 29. 矩形之间的碰撞检测libgdx
- 30. Android中的2D矩形碰撞检测
你正在寻找的重叠,还是一个真正有关联的速度它? – phkahler 2011-06-02 17:16:15
只是静态重叠。 – Matt 2011-06-02 17:22:15