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