2

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

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

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);
}

我需要处理其中一个圆圈以掠射角撞击另一个圆圈的情况(如果需要,我可以稍后再做一个图表),例如当一个小圆圈在经过时几乎没有划伤一个大圆圈的边缘。

如何修改我的碰撞算法以说明一个圆撞击另一个圆的位置?

4