ストリーム粒子のアニメーションの作成
時間経過に対する発射体の経路
この例では、3 次元矢印プロットを使用して、時間の関数として発射体の経路を表示する方法を説明します。
速度定数 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;
速度ベクトルの成分を計算し、3 次元矢印プロットを使用してベクトルを表示します。座標軸の視点を [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. データの範囲の始点の指定
次の例は、適切な開始位置を指定することによって、プロットするボリューム データの範囲を決めます。この場合は、ストリーム プロットは、z の値が 5 の平面で x の値が 100 の点から始まり、y の値は 20 ~ 50 の範囲になります。これは、ボリューム データ全体には及びません。
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');