二维运动中的碰撞检测

时间:2011-05-26 22:40:31

标签: c physics

我已经创建了一个非常简单的数值模拟,它模拟一个物体以某个角度从建筑物中抛出,当物体撞击地面时,模拟停止。现在我想添加碰撞检测。我该怎么做呢? 我知道我需要找到物体(球)撞击地面的确切时间,以及x和y方向的速度,以及物体撞击地面时的位置,我必须添加参数这就是说球会在撞击时反弹多少。但我不知道该怎么做。我知道有各种方法来检测碰撞,但由于我是新手,所以最容易理解的方法是最好的。

3 个答案:

答案 0 :(得分:1)

  • 建立一个坐标系,地面为y = 0。跟踪球飞行时的坐标,然后检查它何时有y = 0,那就是它撞到地面的位置。您还可以在球移动时跟踪x和y速度。

  • 使用物理技能。 This是一个很好的教程。如果你有,我推荐Halliday,Resnick和Walker的物理基础。他们有很好的章节。

答案 1 :(得分:1)

如果您只是在寻找数学,那么您可以为其编写C代码。我发现这个有用。 Math Models

答案 2 :(得分:0)

碰撞检测只涉及确定两个物体之间的距离。

如果您只对对象与地面之间的碰撞感兴趣,可以使用:

if(object.y <= ground.y) {
    //collision occurred
}

要在对象之间进行碰撞,您可以循环遍历所有对象并以相同的方式将它们相互比较。