我正在将游戏原型中的对象建模为圆圈。每个对象都有质量,半径,速度和位置。没有两个物体具有相同的质量和半径。
我必须遵循应该计算它们之间弹性碰撞的代码,但我注意到结果总是好像圆圈已经相互碰撞了。
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);
}
我需要处理其中一个圆圈以掠射角度击中另一个圆圈的情况(如果需要的话,我可以稍后再做一个图表),例如当一个小圆圈刚刚舔到一个较大圆圈的边缘时过去了。
如何修改我的碰撞算法以解释哪一个一个圆圈击中另一个?