二维多边形碰撞检测

Mat*_*att 10 c++ collision-detection

有没有人知道一种简单的方法来检查两个多边形,特别是矩形是否发生碰撞?我找到了一种简单的方法,通过检查两个矩形上的任何线是否发生碰撞来看两个是否触摸,但如果一个多边形在另一个中,则无法工作.有没有人知道更有效的方法来做到这一点或只是一种有效的方式?

此外,有人可以给我一个公式或类似的东西,而不仅仅是你对这个主题的想法.

谢谢

GMa*_*ckG 13

查找分离轴定理.有一个教程在这里.

它快速,优雅,强大,不太硬,并且拥有大量资源.

  • 如果使用矩形,但永远不要忘记分离轴定理仅适用于凸多边形 (2认同)

pho*_*594 6

查看http://www.metanetsoftware.com/technique/tutorialA.html

在开发我自己的碰撞检测程序时,该站点无限地帮助了我.根据可用的处理能力,您可以在碰撞准确性方面做任何您想要的事情.从最少的处理器密集开始:

1)包边盒:适用于矩形形状,可快速启动.您需要知道的是对象的(x,y)位置及其宽度和高度.

2)分离轴定理(SAT):能够处理更复杂的形状并且非常直观.

3)具有Voronoi区域的SAT(VR):使用关于任何给定多边形的顶点最接近的信息以便减少计算的总数.

以上所有内容都在上述链接中进行了深入解释.应该注意,到目前为止,所提到的方法对凸多边形最有效.如果你想进入荒谬的准确度水平,你就会开始进入像位图测试这样的事情,这种测试非常缓慢而且对于几乎任何东西来说都是过度杀戮.