Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Maxim Gusev                          2:5083/39.30   04 Sep 2002  21:17:40
 To : Alexey N Konoplyov
 Subject : поведение частиц
 -------------------------------------------------------------------------------- 
 
 
  AK>     Задача: моделируется поведение частиц на 2d плоскости. Частцы
  AK> обладают массой и притягиваются друг к другу исходя из общеизвестных
  AK> соотношений F=G*m1*m2/R^2, F=m*a.
 
 Круто.
 
  AK> Сейчас это реализовано так: на каждом шаге просчета для каждой из
  AK> частиц высчитывается вектор ускорения, и исходя из этого ускорения
  AK> корректируется скорость движения частицы и ее положение на плоскости.
 
 Первое, что приходит в голову: откажись от умножения на G. Все равно у тебя
 модельное пространство со своими "постоянными". Лишнее умножение ни к чему.
 
 Сила и ускорение - это вектора. Ты не привел подробностей, но возможно, при
 обработке векторов у тебя вычисляется куча лишней тригонометрии.
 
  AK>     Основная проблема: нужно промоделировать большое (порядка
  AK> десятков тысяч) число частиц, причем очень желательно - в реальном
  AK> времени.
 
 Хотелось бы знать, какую задачу ты решаешь, создавая эту модель.
 
  AK> Hо алгоритм, при помощи которого рассчитывается новое положение
  AK> частиц по сути квадратичен,
 
 К сожалению, квадратичен.
 
  AK> т.е. для каждой частицы проверяется воздействие на нее *каждой* из
  AK> частиц. Как следствие - получаем низкую скорость.
 
  AK>     Вопрос - можно ли как-нибудь снизить степень сложности алгоритма?
 
 Можно увеличить скорость в 2-4 раза путем увеличения ;) сложности алгоритма.
 
 Hапример, обрати внимание, что у тебя величина притяжения между объектами,
 скажем, 1 и n вычисляется дважды - при обработке номера 1, а затем - при
 обработке номера n. Можно сделать так, что сила взаимодействия между этими
 объектами вычисляется один раз (меняется только ее знак).
 
 Попробуй нарисовать на бумаге 4 объекта, взаимодействующих по принципу "каждый
 с каждым" и все станет ясно.
 
  AK> В данной реализации потолок - полторы тысячи объектов, один кадр в
  AK> секунду. Объектов необходимо на порядок или два поболее.
 
 Способов преодолеть квадратичный закон пока не вижу.
 
 Если очень надо увеличивать количество объектов, придеться переходить к
 приближенным вычислениям, например, разбить пространство на квадраты и для
 объектов своего и 8 соседних выполнять полные вычисления, а для всех других
 квадратов, вычислив центр масс, рассчитывать взаимодействие только с этим
 центром масс.
 
 Заметь, что твоя дискретная модель имеет, имхо, существенный недостаток: она
 склонна к накоплению ошибок (ты ведешь расчет с конечной точностью) и она
 совершенно неадекватна реальности, когда расстояние между объектами сравнимо с
 величиной их перемещения за выбранный тобой дискретный интервал времени.
 
 Полагаю, эти моменты полностью оправдают переход к приближенным вычислениям .
 
                 C уважением, Maxim Gusev.
 
 --- УТВЕРЖДАЮ. MSG-редактор капитан 2.5 ранга Голд Дедович фор ДОС
  * Origin: ФИДО, вино и либидо! (2:5083/39.30)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 поведение частиц   Alexey N Konoplyov   18 Aug 2002 18:18:34 
 Re: поведение частиц   Valentin Davydov   19 Aug 2002 22:04:40 
 Re: поведение частиц   akrivosheev@utc.ru   20 Aug 2002 10:36:29 
 поведение частиц   Maxim Gusev   04 Sep 2002 21:17:40 
 поведение частиц   Nick Poroshin   07 Sep 2002 02:05:15 
Архивное /ru.algorithms/223383d768ba8.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional