Я моделирую объекты в прототипе игры в виде кругов. Каждый объект имеет массу, радиус, скорость и местоположение. Два объекта не имеют одинаковой массы и радиуса.Взгляд столкновения между кругами
У меня есть следующий код, который должен рассчитать упругое столкновение между ними, но я заметил, что результаты всегда бывают так, как если бы круги ударили друг друга.
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);
}
мне нужно иметь дело со случаем, когда один из кругов ударяет другой под скользящим углом (я могу сделать диаграмму позже, если это необходимо), например, когда небольшой круг едва вмятины краю более крупный круг.
Как изменить мой алгоритм столкновений для учета где один круг попадает в другой?
Вы должны 'atan2', наряду с расстоянием между центрами. – SLaks
Вы за какую-то физику? Практически невозможно заставить код работать без понимания физики. – Beta