Говорит ли неупругое столкновение о том, что мяч отскакивает к вам, когда его бросают на землю под углом?

Я создал симуляцию отскока , используя в точности формулу из Википедии . Поведение, которое я наблюдаю, не то, что я ожидал бы в двух случаях:

  1. Когда два мяча бьют не по центру, они действуют так же, как если бы удар был лобовым. изображение нецентрального столкновения
    Нажмите для анимации

  2. Когда маленький мячик сталкивается с большим мячом (под действием гравитации), он отскакивает вперед и назад по дуге, а не вокруг большого мяча: анимация .

Соответствует ли такое поведение формуле уравнения неупругости?

Это 2D или 3D моделирование?
Это 2D-симуляция.
ладно, в 2D все проще. Следуйте процедуре в моем ответе. Если вы хотите трения, оно строится на этом.
Я просмотрел страницу Википедии, и в демонстрации говорится, что это одномерное столкновение, а не двухмерное. Взгляните еще раз.

Ответы (2)

Для двумерного плоского моделирования с нулевым трением выполните следующие действия.

Определения

  • Каждое тело имеет 3 степени свободы. Это ( Икс 1 , у 1 , θ 1 ) и ( Икс 2 , у 2 , θ 2 ) определяется в центре масс.
  • Каждое тело имеет массу и момент инерции массы. Это м 1 , м 2 и я г 1 , я г 2 .
  • Контакт находится в точке А с координатами ( Икс А , у А ) и с нормальным направлением от угла ψ (измерено против часовой стрелки от +x).
  • Коэффициент реституции ϵ

Представление

  • Скорость каждого тела до удара определяется вектором 3 × 1 (в координатах плоского винта в начале координат).
    в 1 "=" ( Икс ˙ 1 + θ ˙ 1 у 1 у ˙ 1 θ ˙ 1 Икс 1 θ ˙ 1 ) в 2 "=" ( Икс ˙ 2 + θ ˙ 2 у 2 у ˙ 2 θ ˙ 2 Икс 2 θ ˙ 2 )
  • Направление нормали контакта (силы) равно

    н "=" ( потому что ψ грех ψ Икс А грех ψ у А потому что ψ )
    Заметим, что скорость тела 1 в точке контакта по нормали к контакту находится по формуле н в 1 "=" н в 1 "=" ( Икс ˙ 1 + θ ˙ 1 ( у 1 у А ) ) потому что ψ + ( у ˙ 1 θ ˙ 1 ( Икс 1 Икс А ) ) грех ψ

  • Обратная матрица инерции для каждого тела

я 1 1 "=" | 1 м 1 + у 1 2 я г 1 Икс 1 у 1 я г 1 у 1 я г 1 Икс 1 у 1 я г 1 1 м 1 + Икс 1 2 я г 1 Икс 1 я г 1 у 1 я г 1 Икс 1 я г 1 1 я г 1 | я 2 1 "=" | 1 м 2 + у 2 2 я г 2 Икс 2 у 2 я г 2 у 2 я г 2 Икс 2 у 2 я г 2 1 м 2 + Икс 2 2 я г 2 Икс 2 я г 2 у 2 я г 2 Икс 2 я г 2 1 я г 2 |

Упругий удар

  • Скорость удара (скалярная) равна

    в я м п "=" н ( в 2 в 1 )

  • Обратная эффективная масса (скаляр) вдоль контакта каждого тела равна

    мю 1 1 "=" н я 1 1 н мю 2 1 "=" н я 2 1 н

  • Импульс, действующий на тело 2, равен

    Дж "=" ( 1 + ϵ ) в я м п мю 1 1 + мю 2 1

  • Влияние Дж действуя вместе н изменяет движение каждого тела на

    Δ в 1 "=" я 1 1 н Дж Δ в 2 "=" я 2 1 н Дж

  • Изменения в движении переносятся обратно в центр масс (изменение) скоростей. Δ Икс ˙ 1 , Δ у ˙ 1 и изменение вращения Δ θ ˙ 1 решив следующее определение

Δ в 1 "=" ( Δ Икс ˙ 1 + Δ θ ˙ 1 у 1 Δ у ˙ 1 Δ θ ˙ 1 Икс 1 Δ θ ˙ 1 ) Δ в 2 "=" ( Δ Икс ˙ 2 + Δ θ ˙ 2 у 2 Δ у ˙ 2 Δ θ ˙ 2 Икс 2 Δ θ ˙ 2 )

Ударный шаг

  • Конечная скорость в центре масс изменена от ступенчатых значений

Икс ˙ 1 Икс ˙ 1 + Δ Икс 1 ˙ Икс ˙ 2 Икс ˙ 2 + Δ Икс 2 ˙ у ˙ 1 у ˙ 1 + Δ у 1 ˙ у ˙ 2 у ˙ 2 + Δ у 2 ˙ θ ˙ 1 θ ˙ 1 + Δ θ 1 ˙ θ ˙ 2 θ ˙ 2 + Δ θ 2 ˙

Спасибо за ответ! Однако у меня много проблем с преобразованием дифференциальных формул в код или даже с полным их пониманием. Я уже даже не помню, что означает этот синтаксис стрелки. Я понимаю, что это не ваша вина, но это означает, что мне потребуется некоторое время, чтобы обработать этот ответ.
лечить как задание. Он говорит назначить Икс ˙ + дельта к Икс ˙ . Что касается точек, то это просто обозначения. Вам не обязательно брать производную. В коде Икс ˙ 1 будет одна переменная xp_1. И Δ Икс ˙ 1 было бы dxp_1например. Вам нужно будет закодировать матрицу 3 × 3 для векторного умножения 3 × 1.
Примечание: я сделал поправку на результаты шагов скорости. Я забыл умножить на обратную матрицу инерции, чтобы преобразовать импульс (импульс) в скорость.

Нет. Импульс все еще сохраняется. В частности, сохраняется составляющая импульса, параллельная земле. Таким образом, если мяч движется вправо до удара о землю, он продолжит движение вправо после.

Формула, на которую вы ссылаетесь, предназначена для одномерных столкновений. Это применимо только в том случае, если элементы расположены так, что движение действительно происходит только в одном измерении. Два ваших мяча отклонятся друг от друга, потому что они ударятся не по центру. Каждый из них начал бы двигаться частично в вертикальном направлении — с равными составляющими импульса в вертикальном направлении.

Не могли бы вы предложить правильную формулу тогда? Такой, который правильно обрабатывает отклонение и поддерживает 2D?
Получить полностью правильное поведение очень сложно, потому что вам также нужно беспокоиться об угловом моменте. Это наиболее ярко иллюстрируется супермячами: если вы бросите один из них вперед с огромным обратным вращением, вы можете заставить его отскочить обратно к вам. Очевидно, это станет очень сложным; вы получите довольно большие системы уравнений, и вам понадобится множество различных переменных. У меня нет времени выводить все это для вас. Возможно, вам следует просто разделить движение на составляющие, параллельные и перпендикулярные поверхности контакта, и игнорировать угловой момент.
Решил отложить ротацию на потом, но мне и это интересно.