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

Путь снаряда с течением времени

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

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

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 поэтому анимация выполняется быстрее.

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