Как рассчитать скорость после столкновения?

В настоящее время я пишу программу для симулятора частиц. Одно из требований состоит в том, чтобы частицы сталкивались реалистично. Однако я не знаю, как рассчитать конечные скорости.

Для каждого столкновения у меня есть Икс -компонент и у -составляющая каждой скорости, а также перемещение и масса каждой частицы.

Можно ли вычислить направление и величину их скоростей после столкновения? Если да, то как?

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

Ответы (2)

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

Эти уравнения были именно тем, что я искал - спасибо!
Небольшой комментарий к сообщению (v1): Пожалуйста, рассмотрите возможность явного указания автора, названия и т. д. ссылки, чтобы можно было восстановить ссылку в случае ее порчи.

Примечание. В простейшем методе расчета столкновений используется некоторый метод применения импульсов к объектам, которые сталкиваются в некоторый момент времени. Самый простой алгоритм состоит в том, чтобы проверить, пересекаются ли два объекта в какой-то момент времени, и если они пересекаются, вы фиксируете это так, чтобы они перестали пересекаться друг с другом, а затем применяете рассчитанные импульсы к каждому объекту. Однако это не совсем правильно. Вам действительно нужно выяснить, какие столкновения произошли первыми, откатить всю симуляцию назад к моменту первого столкновения и сразу же рассчитать новые скорости . Это работает правильно, если у вас есть много мгновенных и взаимозависимых столкновений.

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

ф "=" к д мю в

где мю и к константы, к д — сила отталкивания пружины Гука , в - относительная скорость двух частиц вдоль оси их столкновения, и мю в есть сила вязкого трения .

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