2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Анимация движения частиц в Wolfram Mathematica
Сообщение28.03.2017, 01:13 
Доброго времени суток!

Есть облако точек, допустим их количество равно 100. Численно моделируется их движения в двумерной области. Нужно сделать анимацию, в которой будет видно, как двигаются точки в этой области.

Подскажите, как лучше это сделать. Данные, где вычисляются траектории, приходят из другой программы, написанной на C++. Была мысль сделать отдельный файл для каждой точки либо же вывести их в один файл, но тут вообще нет идей как быть дальше.

 
 
 
 Re: Анимация движения частиц в Wolfram Mathematica
Сообщение28.03.2017, 02:48 
Аватара пользователя
Данные предлагаю выводить в единый файл в следующем формате;
Код:
x0101 y0101 x0201 y0201 x0301 y0301 ... x10001 y10001
x0102 y0102 x0202 y0202 x0302 y0302 ... x10002 y10002
x0103 y0103 x0203 y0203 x0303 y0303 ... x10003 y10003
...
x0160 y0160 x0260 y0260 x0360 y0360 ... x10060 y10060
В каждой строчке последовательно находятся координаты первой, второй, третьей, ..., сотой частицы в отдельный момент времени. В следующей строчке — в следующий момент времени.
Коротенький пример для трёх частиц и четырёх кадров, чтоб можно было скопировать в Notepad, сохранить и убедиться, что работает:
Код:
0.0 0.0 1.0 1.0 1.0 2.0
0.1 0.1 1.1 0.9 1.2 2.1
0.2 0.1 1.2 0.8 1.3 2.0
0.2 0.2 1.1 0.9 1.2 1.8
Теперь работаем с данными. Импортируем и сразу объединяем в пары иксы и игреки конкретной частицы в конкретном кадре:
Код:
data = Partition[#, 2] & /@ Import["D:/particles.dat"];
Преобразуем в графику и анимируем:
Код:
ListAnimate[Graphics[#, PlotRange -> {{0, 1.4}, {0, 2.2}}] & /@ (Point /@ data)]

Для начала сойдёт, пожалуй.

 
 
 
 Re: Анимация движения частиц в Wolfram Mathematica
Сообщение28.03.2017, 23:50 
А как быть, если граница области задана набором неподвижных точек, которые также необходимо вывести в анимацию?

 
 
 
 Re: Анимация движения частиц в Wolfram Mathematica
Сообщение29.03.2017, 16:51 
Аватара пользователя
Зададим границу:
Код:
border = Point[{{-10, -10}, {-10, 10}, {10, 10}, {10, -10}}]
Внедрим её в анимацию:
Код:
ListAnimate[Graphics[{border, #}, PlotRange -> {{-11, 11}, {-11, 11}}] & /@ (Point /@ data)]
KaedeKato, советую почитать справку как минимум по всем функциям, используемым в коде. Математика великолепно документирована; как правило, подавляющее большинство вопросов отпадает после вдумчивого чтения хэлпа. Впрочем, можете продолжать задавать вопросы и здесь, с удовольствием ответим ;-)

 
 
 
 Re: Анимация движения частиц в Wolfram Mathematica
Сообщение30.03.2017, 13:00 
Аватара пользователя
О чём ещё необходимо упомянуть. Конструкция ListAnimate выдаёт объект со слайдером, кнопками и прочими элементами интерфейса. А если вы желаете сохранить анимацию в гифку или видео, нужно использовать Export. Изменения в коде будут минимальны: Export["D:/anim.gif", Graphics[...]]

 
 
 
 Re: Анимация движения частиц в Wolfram Mathematica
Сообщение23.06.2017, 02:11 
Aritaborian, спасибо огромное!

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group