Определить результирующую скорость упругого столкновения частиц с частицами в трехмерном пространстве.

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

Я пытался следовать инструкциям на этом веб-сайте , но я не уверен, как заставить их уравнения работать без полярных координат / как перевести мои данные в полярные координаты.

Кроме того, если вы ответите на мой вопрос в терминах полярных координат, можете ли вы объяснить, какой угол является тета, а какой фи? Поскольку есть 2 разных соглашения, я не совсем уверен, о каком ракурсе идет речь в объяснении на вышеупомянутом веб-сайте.

EDIT: это не для класса. Я пишу физический движок для моделирования гравитации, который я делаю с помощью Unity. Я не изучал кинематику с тех пор, как учился в старшей школе, поэтому я такой ржавый.

Вы знаете, как это сделать в одном измерении? Как насчет двух?
Значит, преобразованиям координат больше не учат?
RE EDIT : эта веб-страница может быть полезна для объяснения двухмерного упругого столкновения.

Ответы (3)

Я в шоке, что на этом сайте еще нет удовлетворительного ответа!

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

Алгоритм

Вычислить вектор нормали столкновения:

н ^ "=" р 1 р 2 р 1 р 2
Рассчитайте относительную скорость частиц в направлении нормали, используя скалярное произведение:
в р е л "=" ( р ˙ 1 р ˙ 2 ) н ^

Чтобы изменить скорости частиц по нормали столкновения, возьмем:

р ˙ 1 р ˙ 1 в р е л н ^
р ˙ 2 р ˙ 2 + в р е л н ^

Вот и все. Очень просто. Работает в 1D, 2D, 3D, 4D, 5D; любое количество измерений. И это довольно просто!

Видим, что алгоритм работает

Чтобы увидеть, что это меняет скорости вдоль нормального направления, вычислите р ˙ 1 н ^ до и после. Ты найдешь:

в р е л "=" ( р ˙ 1 р ˙ 2 ) н ^ р ˙ 1 н ^ в р е л н ^ н ^ р ˙ 2 н ^ в р е л н ^ н ^ "=" в р е л 2 в р е л "=" в р е л

Одним из ключевых моментов является то, что скорость и импульс центра масс системы не меняются в результате столкновения. Я бы рекомендовал вычислить скорость центра масс до столкновения, а затем использовать тот факт, что она не изменилась, для вычисления новых скоростей. Если столкновение действительно упругое (без диссипации), то кинетическая энергия системы также сохранится. Импульс и сохранение кинетической энергии должны быть всем, что вам нужно для вычисления скоростей после столкновения.

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

Если вы хотите смоделировать упругие столкновения между точечными массами в 3-х измерениях в декартовых координатах, вероятно, проще всего просто решить уравнения самостоятельно! Таким образом, у вас также будет гораздо меньше проблем с отладкой кода (это из моего личного опыта).

Разве столкновение между точечными массами не будет событием с нулевой вероятностью?