【问题标题】:Collision response between two 2d circles两个二维圆之间的碰撞响应
【发布时间】:2011-09-17 10:01:28
【问题描述】:

我正在尝试编写一个模拟,其中两个圆圈会发生碰撞,然后在弹性碰撞中弹开。每个圆都有一个位置、速度、质量和半径。我已经完成了碰撞检测,但我不知道如何确保得到的速度是真实的。

我知道作用在每个上的力是相同的,并且已经计算出合力的角度,但我需要找出力的大小。给定速度和速度,如何求解速度

我正在使用强制,因为它非常适合程序的其余部分,如果有更简单的方法,请告诉我。

【问题讨论】:

    标签: java physics collision


    【解决方案1】:

    首先,弄清楚球是如何从任意角度的墙上反弹的。如果 v 是速度向量,a 是法线(垂直于壁并指向壁外的单位向量),则 v' = v - 2 (v .a) a 为您提供反弹后的速度。

    其次,考虑两个相同但相反动量的球的碰撞,就像两个相同但速度相同的球,互相扫视。每个球都会像撞墙一样,即与两个球相切的线。

    第三,处理一般情况,我们使用Center of Mass Frame。质心的速度为:

    vCM = (mAvA + mBvB)/(mA+mB)

    这是观察者的速度,在观察者看来,两个球似乎具有相等且相反的动量。该观察者框架中的速度是:

    vA' = vA - vCM
    vB' = vB - vCM

    现在我们使用上面的解决方案(“秒”)来求碰撞后的速度,vA''vB''(仍在 CM 框架中)。最后我们回到原来的帧:

    vA''' = vA'' + vCM
    vB''' = vB'' + vCM

    【讨论】:

      【解决方案2】:

      使用动量守恒定律和能量守恒定律。您必须为每个圆假设一些虚构的质量,这样您就可以求解碰撞后产生的速度。

      设 m1 和 m2 分别是圆 c1 和 c2 的质量,速度分别为 v1 和 v2。那么,

      m1.v1 + m2.v2(碰撞前)= m1.v1 + m2.v2(碰撞后)(动量的缺点) 上面的eqn是一个向量方程。

      应用能量守恒:势能 + 动能(碰撞前)= 锅能 + 肯能(碰撞后)

      【讨论】:

      • 这样就对了,但是你还需要指定碰撞后的运动方向,这取决于碰撞的角度等。
      • 由于速度被定义为矢量,因此角度是隐式指定的。用标量能量 eqn 求解矢量 eqn 将得到碰撞后的速度。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      相关资源
      最近更新 更多