Создание анимации потока из частиц

Путь к снаряду в зависимости от времени

Этот пример показывает, как отобразить путь снаряда как функция времени с помощью 3D графика полей градиента.

Покажите путь следующего снаряда с помощью констант для скорости и ускорения, 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 графика полей градиента. Измените точку зрения осей к [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])

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

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

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');