瞥见圆圈之间的碰撞

时间:2013-08-16 14:32:20

标签: java algorithm geometry collision-detection physics

我正在将游戏原型中的对象建模为圆圈。每个对象都有质量,半径,速度和位置。没有两个物体具有相同的质量和半径。

我必须遵循应该计算它们之间弹性碰撞的代码,但我注意到结果总是好像圆圈已经相互碰撞了。

private void handleCollision(JumpObject a, JumpObject b) {
        double newVelAX = (a.getVelocity().x * (a.getMass() - b.getMass()) + (2 * b.getMass() * b.getVelocity().x)) 
                / (a.getMass() + b.getMass());
        double newVelAY = (a.getVelocity().y * (a.getMass() - b.getMass()) + (2 * b.getMass() * b.getVelocity().y)) 
                / (a.getMass() + b.getMass());
        double newVelBX = (b.getVelocity().x * (b.getMass() - a.getMass()) + (2 * a.getMass() * a.getVelocity().x)) 
                / (a.getMass() + b.getMass());
        double newVelBY = (b.getVelocity().y * (b.getMass() - a.getMass()) + (2 * a.getMass() * a.getVelocity().y)) 
                / (a.getMass() + b.getMass());

        a.getVelocity().setLocation(newVelAX, newVelAY);
        b.getVelocity().setLocation(newVelBX, newVelBY);
}

我需要处理其中一个圆圈以掠射角度击中另一个圆圈的情况(如果需要的话,我可以稍后再做一个图表),例如当一个小圆圈刚刚舔到一个较大圆圈的边缘时过去了。

如何修改我的碰撞算法以解释哪一个一个圆圈击中另一个?