移动物体的碰撞检测

时间:2016-08-30 00:37:16

标签: collision-detection computational-geometry recommendation-engine

说我有几个移动的物体。我知道它们的形状(简单如盒子,球体,圆柱体)和它们的位置功能虽然是时间(非线性)。我想检测它们与另一个特定的移动物体(一个特殊物体)碰撞的时间和地点。我希望存在某种类型的库,它可以检测出两个物体碰撞时空间和时间的点,但我找不到它。

您是否了解任何有效的算法来解决此问题或任何库(使用任何语言)来解决它?

1 个答案:

答案 0 :(得分:0)

那里有很多算法,但它们都是特定于对象类型的。线速度的一般模式是,你采用形状/形状距离的等式,按时参数化(给定物体的相对位置和相对速度),求解距离为零。

例如,如果你有两个球体,并且第二个相对于第一个的相对位置是X0,第二个相对于第一个的相对速度是V,并且球体具有半径r1和r2 ,你解决D(t) = ||X0 + V*t|| - (r1+r2) = 0

对于非线性运动,您基本上将X(t)作为函数,而不是X(t) = X0+V*t。根据功能的复杂程度,这可能很容易,也可能很难。假设它很难(可能是),你可以选择Newton-Raphson这样的迭代求解方法。幸运的是,距离公式往往很容易采用衍生物。

非线性运动的另一个选择是将其离散化为线性步骤。这种方式只是一种廉价且快乐的迭代方法,但鉴于大多数方法都采用线性速度,它可能是应用它们最直接的方法。

当然,我在那里使用球体作弊。对于找到距离而言,盒子和圆柱体更加烦人,特别是如果它们正在旋转。我可以推荐Ericson"实时碰撞检测"作为该主题的标准书;它有各种形状对的配方,以及更复杂形状的重型方法。