我正在做一个 2D 球对墙碰撞/弹跳动画程序。我设法进行球对球碰撞,以及球对直线壁碰撞(两者都是弹性碰撞)。
我的问题是,我如何处理从曲面反弹的球的碰撞?例如,一个球在被困在一个圆圈中时弹跳(圆圈是墙)。
干杯
ps 我用的是c编程语言
我正在做一个 2D 球对墙碰撞/弹跳动画程序。我设法进行球对球碰撞,以及球对直线壁碰撞(两者都是弹性碰撞)。
我的问题是,我如何处理从曲面反弹的球的碰撞?例如,一个球在被困在一个圆圈中时弹跳(圆圈是墙)。
干杯
ps 我用的是c编程语言
基本原则始终是:
在圆-圆碰撞的情况下:
r1
一个圆的半径(在 3d 中,球)r2
另一个圆的半径d
他们的中心的距离d>r1+r2
,圆完全在彼此之外r1>r2+d
,则第二个圆完全在第一个圆内r2>r1+d
,第一个圆圈完全在最后一个圆圈内恕我直言,当球被困在圆形墙内时,球的反射将像普通墙一样受到控制,因为墙和球之间的接触点可以忽略不计。唯一的变化是反射平面将与球和墙壁之间的接触点相切。因此,切线的角度在不同的碰撞点将不同,这将决定球的速度角。
我们可以通过将曲面视为一个半径等于曲面曲率的巨大球来处理凸曲面。所以,我们只是在计算 2 个球之间的碰撞。当然,在这种情况下,我们必须考虑表面的质量是无限的,并从弹性碰撞方程中推导出方程。