Re: поведение частиц
- From
- Valentin Davydov ()
- To
- Alexey N Konoplyov
- Date
- 2002-08-19T22:04:40Z
- Area
- RU.ALGORITHMS
From: Valentin Davydov <val@sqdp.trc-net.co.jp>
> From: Alexey N Konoplyov
> <Alexey.N.Konoplyov@p512.f156.n5070.z2.fidonet.org>
> Date: Sun, 18 Aug 2002 17:18:34 +0400
>
> Задача: моделируется поведение частиц на 2d плоскости. Частцы обладают
>массой и притягиваются друг к другу исходя из общеизвестных соотношений
>F=G*m1*m2/R^2, F=m*a.
>
> Сейчас это реализовано так: на каждом шаге просчета для каждой из частиц
>высчитывается вектор ускорения, и исходя из этого ускорения корректируется
>скорость движения частицы и ее положение на плоскости.
>
> Основная проблема: нужно промоделировать большое (порядка десятков тысяч)
>число частиц, причем очень желательно - в реальном времени. Но алгоритм, при
>помощи которого рассчитывается новое положение частиц по сути квадратичен, т.е.
>для каждой частицы проверяется воздействие на нее *каждой* из частиц. Как
>следствие - получаем низкую скорость.
>
> Вопрос - можно ли как-нибудь снизить степень сложности алгоритма? В данной
>реализации потолок - полторы тысячи объектов, один кадр в секунду. Объектов
>необходимо на порядок или два поболее.
Если распределение частиц можно параметризовать, то попробуй использовать
метод Хартри-Фока, когда движение каждой частицы рассматривается в некоем
усреднённом потенциале, который, в свою очередь, зависит от положения всех
частиц и вычисляется только один раз за итерацию. В твоей конкретной задаче
(искусственное ограничение движения частиц плоскостью), скорее всего,
придётся отдельно учитывать столкновения, то есть случаи, когда энергия
взаимодействия двух сблизившихся частиц становится сравнимой с общим
потенциалом в этом месте. Расплачиваться за скорость придётся потерей
информации: вместо траектории каждой частицы ты более-менее надёжно получишь
лишь параметры распределения.
Вал. Дав.
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)