创建流粒子动画
随时间变化的抛射体路径
此示例演示如何使用三维箭头图将抛射体路径显示为时间函数。
使用速度和加速度常量 vz
与 a
显示如下抛射体路径。计算时间从 0 到 1 的变化过程中高度 z
的值。
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;
计算速度向量的分量并使用三维箭头图显示该向量。将坐标区的视点改为 [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 的平面,但某些螺旋线的值更低。以下设置提供了清晰的动画视图:
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');