1

由于在数字世界中几乎不会发生真正的碰撞,因此我们总是会遇到“碰撞”球重叠的情况。

在没有重叠的情况下完美碰撞的情况下如何放回球?

我会用后验方法(二维)解决这个问题。

简而言之,我必须为 t 求解这个方程:

((x2 - t * v.x2) - (x1 - t * v.x1))^2 + ((y2 - t * v.y2) - (y1 - t * v.y1))^2 = (r1 + r2)^2

在哪里:

  • 吨是一个回答问题的数字:碰撞完美发生在多少帧之前?
  • (x1, y1)是第一个球的中心
  • (x2, y2)是第二个球的中心
  • (v.x1, v.y1)是他们的(v.x2, v.y2)速度。

但是WolframAlpha的解决方案太复杂了(我更改了速度的名称,但基本上没有改变任何东西)。

4

1 回答 1

3

它看起来很复杂,因为它是完整的解决方案,而不仅仅是它的简化多项式形式。将所有内容相乘并收集常数、t 和 t^2 项,您会发现它恰好变为 ^2 + bt + c = 0。从那里您可以使用二次公式。

此外,如果您想保持简单,请使用矢量数学来完成。这里没有理由分开 x 和 y 坐标。您只需要矢量加法和点积。

最后,重要的是相对位置和相对速度。假设一个圆位于原点且静止,并将差异应用于另一个球。这不会改变答案,但确实会减少您争论的变量数量。

于 2013-09-08T13:53:55.117 回答