2014-08-30 71 views
0

如何有效检测图像层和生成的形状之间的碰撞?图像层和形状之间的碰撞检测

我需要一个快速和全面的方法来检测可旋转图像层和生成的形状之间的碰撞。

到目前为止,我已经将图像分成一系列包含大多数像素的圆圈,然后针对其他形状测试每个圆圈。为了提高性能,我在每个结构周围创建了外围圆,只测试这些较大的圆,直到两个结构足够接近以便发生碰撞。

真正的问题是,例如,将可旋转的矩形碰撞到这些图像结构之一是非常困难的。用圆圈填充矩形看起来效率不高。更何况,我正在组合爆炸,使循环非常复杂和糟糕的表现。

任何人都知道更好的方式来处理这种类型的碰撞?我用Java,Python和C编写。我也愿意使用C++。

+0

我在gamedev.SE上看到类似的问题,确保你浏览了该网站 – 2014-08-31 00:09:02

回答

0

通常情况下,球体碰撞只是真正的碰撞测试的过滤器。

您可以:

  • 决定碰撞限制,例如,如果它是一个游戏。
  • 实现真正的碰撞,并做完整的数学。你基本上是相交两个矩形的旋转边缘(16例)。相交两条边就好像它们是直线一样,只会有一个交点(除非它们是平行的),如果该点位于该段内,则会发生碰撞。

要限制复杂性,可以使用四叉树/八叉树。将你的空间分成四个矩形,然后把这些矩形分成四个等等,直到它们太小而不能包含对象或是空的。将可碰撞物体放入树中最具特色的部分,它们将包含它们。如果两个物体在同一个子矩形中,或者一个在另一个的父级中,则只能碰撞。

不确定有帮助,但它们是想法。