gpt4 book ai didi

algorithm - 如何化解这种与冲动的肉体碰撞?

转载 作者:行者123 更新时间:2023-12-05 03:34:23 26 4
gpt4 key购买 nike

我已经开始编写一个物理引擎,但陷入了解决碰撞的一些物理过程中。假设我有这种情况:

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 停止移动。

所以我错过了什么吗?基于冲动的方法在物理上是不正确的吗?我感谢任何关于如何正确解决冲突的见解和建议。谢谢!

最佳答案

您正在查看的公式适用于两个质点的碰撞。点质量不能有角动量,因此公式中没有该项的空间。

你必须回到第一原则。

假设一条边在一个点与另一个物体发生碰撞(想想角撞到一条边)。然后在该点沿垂直于边缘的方向施加特定的脉冲。 (任何其他方向都需要摩擦力,这将使它成为非弹性碰撞。)相反的冲量沿着相同的矢量传递给另一个物体。向两个物体施加相反的脉冲足以保证动量和角动量守恒。但是能量守恒需要做一些工作。

接下来,当我们传递这种动力时会发生什么?作为this物理答案说,我们传递动量就好像脉冲发生在质心上一样。我们赋予的角动量等于冲量和力臂的叉积(矢量描述冲量偏离质心的程度)。这将导致 body 开始以冲量除以 moment of inertia 的速率旋转。 .

您从质心的运动中获得动能,而且还kinetic energy从它的旋转。

因此,在您的二维碰撞中,您现在拥有以下事实:

  1. 每个物体的质量。
  2. 每个物体的速度。
  3. 每个速度的转动惯量。
  4. 每个物体的角速度。
  5. 每个物体力线的力臂。

您现在可以计算整个系统的动能,作为比冲量大小的函数。与点质量不同,所有这些因素都会影响它,使方程变得复杂。然而,就像质点一样,您将得到一个有 2 个解的二次方程。一种解决方案是 0 脉冲传递(代表碰撞前的系统),另一种是碰撞后的答案。完成两个系统的动量和角动量的变化。

关于algorithm - 如何化解这种与冲动的肉体碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70157416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com