Я хотел бы написать небольшую программу, имитирующую многие столкновения частиц, начиная сначала в 2D (я бы расширил ее до 3D позже), чтобы (в 3D) имитировать сходимость к распределению Больцмана, а также посмотреть, как распределение развивается в 2D.
Я еще не начал программировать, поэтому, пожалуйста, не просите образцы кода, это довольно общий вопрос, который должен помочь мне начать. Для меня нет проблем с физикой, стоящей за этой проблемой, скорее это факт, что мне придется моделировать не менее 200-500 частиц, чтобы добиться довольно хорошего распределения скорости. И я хотел бы сделать это в режиме реального времени.
Теперь для каждого временного шага я сначала обновляю положение всех частиц, а затем проверяю на наличие столкновений, чтобы обновить новый вектор скорости. Это, однако, включает в себя множество проверок, так как я должен был бы увидеть, испытывает ли каждая отдельная частица столкновение с каждой другой частицей. Я нашел эту статью в более или менее той же проблеме, и подход, который был использован там, был единственным, о котором я могу думать. Однако я боюсь, что это не будет работать очень хорошо в режиме реального времени, потому что это будет включать слишком много проверок на столкновение.
Итак, теперь: даже если этот подход будет работать с точки зрения производительности (скажем, 40 кадров в секунду), может ли кто-нибудь подумать о том, как избежать ненужных проверок конфликтов?
Моя собственная идея заключалась в разделении доски (или в 3D: пространстве) на квадраты (кубы), которые имеют размеры по меньшей мере диаметров частиц и реализуют способ проверки только столкновений, если центры двух частиц внутри смежных квадратов в сетке...
Я был бы рад услышать больше идей, так как хотел бы увеличить количество частиц столько, сколько смогу, и все еще иметь расчеты/моделирование в реальном времени.
Изменить: Все столкновения - это чисто упругие столкновения без каких-либо других сил, выполняющих работу над частицами. Начальная ситуация, которую я реализую, будет определяться некоторыми переменными, выбранными пользователем для выбора случайных стартовых позиций и скоростей.
Edit2: Я нашел полезную и полезную статью о моделировании столкновения частиц здесь. Надеюсь, это может помочь некоторым людям, которые заинтересованы в большей глубине.