与不规则形状的碰撞 - 检测和处理

时间:2015-02-03 09:02:29

标签: collision-detection collision

我试图检测并处理几个形状不规则的圆形物体之间的碰撞。

enter image description here

我认为,我必须使用像素完美的碰撞检测。我是对的(我想这不是很有效率)?

但是如何计算碰撞的结果呢?我想模拟"弹跳"对象。

enter image description here

很容易计算出"反弹"具有规则形状的角度。但在这种情况下呢?如何进行?有没有众所周知的方法?

1 个答案:

答案 0 :(得分:2)

任何处理碰撞的算法都需要使用曲线本身的精确定义,而不仅仅是其像素格式,它不是矢量化的,无论如何都无法在2D空间上正确拉伸或转换。

在3D世界中,典型的方法是将所有表面划分为三角形。因此,为了计算碰撞,它等效于计算圆心与每个三角形的距离,其具有良好建立的算法和数学表示。现在将其缩小为2D,我认为你需要

  1. 将您的任意形状有效地转换为连接的直线
  2. 计算中心与每条直线的距离
  3. 确定碰撞。注意这样你也可以很好地处理弹跳情况,其中碰撞角度= =弹跳角度。

    有几种方法可以加速这一过程。一种常见的方法是将不规则形状的每个部分环绕成一个圆圈。 (2D)或"球体(3D)。如果外圆/球体不与您的圆相撞,则其中包含的线也不会。

    您可以阅读计算机图形以了解有关此类内容的更多信息。