Я создал симуляцию отскока , используя в точности формулу из Википедии . Поведение, которое я наблюдаю, не то, что я ожидал бы в двух случаях:
Когда два мяча бьют не по центру, они действуют так же, как если бы удар был лобовым.
Нажмите для анимации
Когда маленький мячик сталкивается с большим мячом (под действием гравитации), он отскакивает вперед и назад по дуге, а не вокруг большого мяча: анимация .
Соответствует ли такое поведение формуле уравнения неупругости?
Для двумерного плоского моделирования с нулевым трением выполните следующие действия.
Направление нормали контакта (силы) равно
Обратная матрица инерции для каждого тела
Скорость удара (скалярная) равна
Обратная эффективная масса (скаляр) вдоль контакта каждого тела равна
Импульс, действующий на тело 2, равен
Влияние действуя вместе изменяет движение каждого тела на
Изменения в движении переносятся обратно в центр масс (изменение) скоростей. , и изменение вращения решив следующее определение
xp_1
. И
было бы dxp_1
например. Вам нужно будет закодировать матрицу 3 × 3 для векторного умножения 3 × 1.Нет. Импульс все еще сохраняется. В частности, сохраняется составляющая импульса, параллельная земле. Таким образом, если мяч движется вправо до удара о землю, он продолжит движение вправо после.
Формула, на которую вы ссылаетесь, предназначена для одномерных столкновений. Это применимо только в том случае, если элементы расположены так, что движение действительно происходит только в одном измерении. Два ваших мяча отклонятся друг от друга, потому что они ударятся не по центру. Каждый из них начал бы двигаться частично в вертикальном направлении — с равными составляющими импульса в вертикальном направлении.
Джон Алексиу
Томаш Зато
Джон Алексиу
Питер Р