繁体   English   中英

圆之间的冲突

[英]Glancing collision between circles

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

我必须遵循应该用来计算它们之间的弹性碰撞的代码,但是我注意到结果总是好像圆环彼此碰撞一样。

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

我需要处理这样一个情况,其中一个圆以一个掠过的角度撞到另一个圆(如果需要的话,我可以稍后再做一个图),例如当一个小圆刚经过时几乎不刻划一个大圆的边缘时。

如何修改我的碰撞算法以说明一个圈击中对方?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM