Я использовал следующий код, основанный на this
ballA.vx = (u1x * (m1 - m2) + 2 * m2 * u2x) / (m1 + m2);
ballA.vy = (u1y * (m1 - m2) + 2 * m2 * u2y) / (m1 + m2);
ballB.vx = (u2x * (m2 - m1) + 2 * m1 * u1x) / (m1 + m2);
ballB.vy = (u2y * (m2 - m1) + 2 * m1 * u1y) / (m1 + m2);
, но он явно не соответствует формуле предназначен для одномерных столкновений.
Итак, я попытался использовать приведенную ниже формулу из этого раздела .
Но проблема в том, что я не знаю, каков угол отклонения и как его рассчитать. Кроме того, как учесть коэффициент отскока в этой формуле?
Редактировать : Возможно, я не совсем понял. Приведенный выше код работает , хотя это может не быть ожидаемым поведением, поскольку исходная формула предназначена для одномерных коллизий. Поэтому я пытаюсь ответить на следующие вопросы: