图像层和形状之间的碰撞检测

时间:2014-08-30 22:10:29

标签: java python c algorithm collision-detection

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

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

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

真正的问题是很难将可旋转的矩形碰撞到这些图像结构中的一个中。用圆圈填充矩形也似乎效率不高。更不用说我得到的组合爆炸会使循环变得非常复杂和性能不佳。

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

1 个答案:

答案 0 :(得分:0)

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

你可以:

  • 决定将碰撞限制在此范围内,例如,如果它是游戏。
  • 实现真正的碰撞并完成全部数学运算。您基本上与两个矩形的旋转边相交(16个案例)。将两条边相交,就好像它们是直线一样,只有一个交点(除非它们是平行的),如果该点位于该区段内则发生碰撞。

为了限制复杂性,您可以使用四叉树/八叉树。将您的空间划分为四个矩形,然后将这些矩形划分为四个等等......直到它们太小而不能包含对象或为空。将可碰撞对象放入将包含它们的树的最特定部分。如果两个对象位于同一个子矩形中,或者一个对象位于另一个对象的任何父对象中,则它们只能发生碰撞。

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