我正在学习基本的碰撞检测。
使用后验(离散)方法进行碰撞检测。假设最简单的情况是 2D 中的 2 个圆,相同的质量,相同的大小,并假设弹性碰撞并假设它们在 x 轴上移动并朝着彼此的方向移动。
现在将模拟推进一个时间步。
现在假设这些圆圈正在发生碰撞,其中一个圆圈进入了另一个圆圈。这是通过检查它们的中心之间的距离是否小于 2*r 来发现的,其中 r 是半径)。
现在根据标准方程调整速度,模拟前进一个时间步长,调整位置。在这种情况下,速度将翻转方向,圆圈将开始彼此远离。
问题是,如果模拟时间步太小或物体移动太慢,这两个圆圈可能会在下一步之前保持碰撞,因为它们还没有完全移出彼此。
因此,在下一个时间步,圆圈再次发生碰撞,再次调整速度,但现在它们会向后翻转,因此圆圈将开始相互移动。
在下一个时间步,再次检测到碰撞,调整速度,圆圈现在将彼此远离。
这个过程重复,圆圈将保持碰撞,无法完全离开彼此。
我确信这是后验方法的一个已知问题。解决这种情况的最佳方法是什么?