如何使用冲量解决物理碰撞问题?

3

我开始编写一个物理引擎,但在解决碰撞物理时遇到了困难。假设我有这种情况:

enter image description here

即,物体B以每单位时间1个空间单位的速度朝向物体A。A和B的质量都是1个单位。让我们考虑一个完全弹性碰撞
我在一本书(《游戏物理引擎开发》)中读到可以使用基于冲量的方法来解决碰撞问题(即找出碰撞后两个物体的线性和角速度)。据我所知,它应该像这样工作:
1. 当物体碰撞时,我获取碰撞点和碰撞法线。 2. 在碰撞点处,我只考虑沿法线方向上的两个点碰撞(即物体接触的点,忽略两个物体的形状),并计算这两个碰撞点的新速度(这很容易做到,有一个简单的公式可在Wikipedia上找到)。 3. 找到一个冲量,使其在该点施加于两个物体时,能够实现这两个点的计算速度。
现在问题出现了,当我考虑从物理角度来看,动量和动能都需要被保持不变。有了这些限制,似乎没有解决方案,因为:
当B与A碰撞时,根据弹性碰撞公式,B应该完全停止并将其所有动量和动能转移到A上。为了保持线性动量不变,A随后必须以与碰撞前B相同的速度向左线性移动(因为它们具有相同的质量)。所以现在A拥有与B相同的动能,然而这意味着A不能旋转,因为这会增加额外的动能(旋转也会增加动能以及线性运动),破坏动能守恒。尽管如此,正确的物理解决方案是A同时向左线性移动和旋转,因为在此位置碰撞的B施加扭矩(我还检查过真实物体的行为方式)。请注意,我们不能从A的线性运动中取走一些能量并将其添加到旋转中,因为这会破坏线性动量守恒。
唯一的“真正”解决方案是B不会完全停止,而是保持一些动量,而A将同时向左移动和旋转。但似乎无法使用基于脉冲的方法实现这一点,因为该方法只考虑了两个碰撞点,弹性碰撞公式仅说明B点应该停止,而B不能接收任何扭矩(碰撞发生在其中间),实现这一点的唯一方法是B停止运动。那么我错过了什么吗?基于脉冲的方法是否正确?感谢任何有关如何正确解决碰撞的见解和建议。谢谢!

据我所知,如果发生这样的碰撞,那么您对于动量和能量守恒是正确的。但是,如果A在碰撞后应该旋转(由于其形状),那么B现在也不应该旋转吗?(系统早期的角动量为零,因此如果A在碰撞后旋转,则B应该以相反方向旋转-角动量守恒)。 - Ankush
2
如果你在https://physics.stackexchange.com或者https://gamedev.stackexchange.com上提问,我认为你会得到更好的答案。当然,在这里提问也没有问题,只是我认为那些网站上有更多知道答案的人。 - RBarryYoung
你完全不在正确的网站上。 - user1196549
碰撞后,有三个未知量:A和B的速度以及A的角速度。通过解决由动量守恒、绕质心的角动量守恒和动能守恒(运动+旋转项)形成的系统来找到这些未知量。这个系统将有一个解。 - user1196549
我在想这是否是正确的问题提问地点,既然存在物理学和游戏物理学类别,我就打算试一试,但如果没有答案出现,我会前往其他网站,让我们拭目以待。 - Miloslav Číž
1个回答

3
你正在查看的公式是用于两个质点的碰撞。点质量不能具有角动量,因此公式中没有这个术语的空间。
你必须回到第一原理。
假设一个边缘在一个点上与另一个物体碰撞(考虑角落撞击边缘)。然后,在该点施加特定的冲量,沿着边缘的法向方向。(任何其他方向都需要摩擦力,这将使其成为非弹性碰撞。)相反的冲量沿着相同的矢量传递给另一个物体。对两个物体施加相反的冲量足以保证动量和角动量守恒。但能量守恒需要一些工作。
接下来,当我们施加动量时会发生什么?正如this物理学答案所说,我们施加动量就好像脉冲发生在质心上一样。我们施加等于脉冲和力臂(描述脉冲偏离质心的向量)的叉积的角动量。这将导致物体以脉冲除以惯性矩的速率开始旋转。
你从质心的运动中得到动能,但也从其旋转中得到动能
因此,在你的二维碰撞中,你现在有以下事实:
  1. 每个物体的质量。
  2. 每个物体的速度。
  3. 每个速度的惯性矩。
  4. 每个物体的角速度。
  5. 每个物体的力线的力臂。
你现在可以计算整个系统的动能,作为比冲大小的函数。与质点不同,所有这些因素都会影响它,使方程变得复杂。然而,像质点一样,你将得到一个具有2个解的二次方程。一个解是没有任何冲量传递(表示碰撞前的系统),另一个解是碰撞后的答案。包括对两个系统的动量和角动量的变化。

很多东西都很有道理,而且与我所读的一致——好的,现在我明白了,我应该解决方程组并解出脉冲的大小。但是现在我想到的一个问题是:在我的上面的例子中,角动量怎么可能会被守恒呢?A会旋转,而B没有任何可能反向旋转(手臂将为0,或者你甚至可以想象一个圆/球形代替B,它无法在没有摩擦的情况下旋转)。 - Miloslav Číž
2
@MiloslavČíž 角动量不一定像自旋那样。从A的原始质心的惯性参考系来看,即使没有自旋,物体B的角动量也等于其质量乘以速度叉乘力臂。冲量在两者之间转移角动量,并且给予A的与从B中取走的一样多。 - btilly
非常感谢@btilly提供的这些答案。 - Miloslav Číž

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接