【问题标题】:How to find the Circle Collision Response如何找到圆碰撞响应
【发布时间】:2013-02-18 05:30:03
【问题描述】:

我目前正在制作一个 2D 台球游戏,我必须在其中使用真实的物理模拟。到目前为止,我已经完成了圆形碰撞和弹性碰撞,但是我想要一个可以找到碰撞响应速度的公式,当球在不同点与其他球碰撞时会有所不同,这要提前谢谢。

【问题讨论】:

    标签: c++ game-physics directx-9


    【解决方案1】:

    有很多方法,但如果你能负担得起让球重叠一点(也就是说,让球的一部分“进入”另一个球),你可以把它变成一个弹簧阻尼系统并用@解决987654321@.

    既然胡克定律给了你力量,你需要整合它才能找到动力。动量除以质量就是您要寻找的速度。

    看看 this 游戏开发的 spring 物理的优秀介绍(也有他的数值积分介绍的链接)。

    编辑:如果您正在寻找实用的解决方案,我建议您使用Box2D physics engine

    【讨论】:

    • 不,这实际上不是我的意思,我想找到碰撞响应角度。 en.wikipedia.org/wiki/File:Elastischer_sto%C3%9F_2D.gif
    • @user2028359 - 那么你应该改变你的问题,因为它说“碰撞响应速度”
    • @user2028359 我相信通过这种方法您也可以提取角度:它是您的物理引擎在碰撞期间计算的加速度方向。如果将加速度(或力)除以其范数,则得到碰撞角的正弦和余弦。有一个复杂性,因为在碰撞过程中加速度会发生变化(碰撞不是瞬时的)。另请注意,使用弹簧阻尼系统,您无需直接计算角度(除非您希望它们用于游戏逻辑)。
    • 我已经多次实现了 2d 碰撞。胡克定律的整合是我发现的最好(最快、最稳定、最容易修改)的方法。它还会隐含地为您提供速度。您只需使用 trig 将胡克定律分解为多个分量,然后将所有向量相加,每个向量乘以时间上的一个无穷小变化,然后除以物体的质量即可得出最终速度,也是向量形式。
    【解决方案2】:

    水池碰撞可以被认为是整个板的弹性碰撞,摩擦减慢了它的运动。

    不要以圆的角度来考虑碰撞响应。使用向量会缓解这个问题。

    圆-圆碰撞速度响应很简单: 1. 检测到碰撞时 2. 求球朝向另一个球的法向速度。 3.交换两个球之间的法线速度 4.解析x和y方向的速度

    一个非常有用的网站,可以根据矢量找到速度响应:http://archive.ncsa.illinois.edu/Classes/MATH198/townsend/math.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 2013-09-12
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多