exponenta event banner

Создание анимаций потоковых частиц

Траектория снаряда по времени

В этом примере показано, как отобразить путь снаряда как функцию времени с помощью трехмерного графика quiver.

Показать траекторию следующего снаряда с помощью констант скорости и ускорения, vz и a. Вычислить z поскольку высота по времени изменяется от 0 до 1.

z (t) = vzt + at22

vz = 10; % velocity constant
a = -32; % acceleration constant         
t = 0:.1:1;
z = vz*t + 1/2*a*t.^2;

Вычислите положение в направлении X и направлении Y.

vx = 2;
x = vx*t;

vy = 3;
y = vy*t;

Вычислите компоненты векторов скорости и отобразите векторы с помощью графика 3-D quiver. Изменение точки обзора осей на [70,18].

u = gradient(x);
v = gradient(y);
w = gradient(z);
scale = 0;

figure
quiver3(x,y,z,u,v,w,scale)
view([70,18])

Figure contains an axes. The axes contains an object of type quiver.

Что могут показать анимации частиц

Анимация частиц потока полезна для визуализации направления потока и скорости векторного поля. «Частицы» (представленные любым из линейных маркеров) отслеживают поток по конкретной линии потока. Скорость каждой частицы в анимации пропорциональна величине векторного поля в любой заданной точке вдоль линии потока.

1. Укажите начальные точки диапазона данных

В этом примере определяется область объема для печати путем указания соответствующих начальных точек. В этом случае графики потока начинаются с x = 100, и y охватывает от 20 до 50 в плоскости z = 5, которая не является границами полного объема.

load wind
[sx sy sz] = meshgrid(100,20:2:50,5);

2. Создание линий потока для указания путей частиц

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

verts = stream3(x,y,z,u,v,w,sx,sy,sz);
sl = streamline(verts);

3. Определение вида

В то время как все линии потока начинаются в плоскости z = 5, значения некоторых спиралей уменьшаются до более низких значений. Следующие настройки обеспечивают четкое представление анимации:

  • Точка обзора (view) показывает как плоскость, содержащую большинство линий потока, так и спираль.

  • Выбор соотношения сторон данных (daspectиз [2 2 0.125] обеспечивает большую разрешающую способность в направлении z, чтобы сделать частицы потока более легко видимыми в спирали.

  • Установите предельные значения осей в соответствии с предельными значениями данных (axis) и нарисуйте поле оси (box).

    view(-10.5,18)
    daspect([2 2 0.125])
    axis tight;
    set(gca,'BoxStyle','full','Box','on')
    

4. Расчет вершин частиц потока

Определите вершины вдоль линии потока, где будет нарисована частица. interpstreamspeed функция возвращает эти данные на основе вершин линии потока и скорости векторных данных. Этот пример масштабирует скорости на 0,05 для увеличения числа интерполированных вершин.

Установка осей SortMethod свойство для childorder таким образом, анимация работает быстрее.

streamparticles устанавливает следующие свойства:

  • Animate кому 10 чтобы запустить анимацию 10 раз.

  • ParticleAlignment кому on чтобы запустить все следы частиц вместе.

  • MarkerEdgeColor кому none для рисования только грани кругового маркера. Анимации обычно выполняются быстрее, когда кромки маркера не нарисованы.

  • MarkerFaceColor кому red.

  • Marker кому o, который рисует круговой маркер. Можно также использовать другие маркеры линий.

    iverts = interpstreamspeed(x,y,z,u,v,w,verts,0.01);
    set(gca,'SortMethod','childorder');
    streamparticles(iverts,15,...
    	'Animate',10,...
    	'ParticleAlignment','on',...
    	'MarkerEdgeColor','none',...
    	'MarkerFaceColor','red',...
    	'Marker','o');