可視化手法 | ![]() ![]() |
ストリームチューブは、ストリームラインと似ていますが、情報を表わすために利用可能なもう一つの次元を与える幅をもっています。
デフォルトでは、MATLABはチューブの幅によってベクトル場の発散を表わします。各々のチューブの頂点について幅を定義することが可能で、それにより他のデータを幅に写像することができます。
入力には物体の座標、ベクトル場の要素、ストリームチューブの開始位置が含まれます。
1. データのロードと必要な値の計算
最初のステップは、データをロードし、プロットの作成に必要な値を計算することです。これらの値には、以下が含まれます。
load wind xmin = min(x(:)); xmax = max(x(:)); ymin = min(y(:)); alt = 7.356; % z-value for slice and streamtube plane wind_speed = sqrt(u.^2 + v.^2 + w.^2);
2. スライス平面の描画
スライス平面を描画し(slice
)、surface
プロパティを設定して滑らかに色付けされたスライスを作成します。hsv
colormap
から16色を使います。
hslice = slice(x,y,z,wind_speed,xmax,ymin,alt); set(hslice,'FaceColor','interp','EdgeColor','none') colormap hsv(16)
3. スライス平面にコンターラインを付加
スライス平面にコンターラインを付加します(contourslice
)。コンターの間隔を調整して、つぎのようにラインがスライス平面内のカラーの境界と一致するようにします。
caxis
を実行してカレントのカラーの範囲を取得します。contourslice
が利用する内挿法を linear
に設定して slice
が利用するデフォルトと一致させます。color_lim = caxis; cont_intervals = linspace(color_lim(1),color_lim(2),17); hcont = contourslice(x,y,z,wind_speed,xmax,ymin,... alt,cont_intervals,'linear'); set(hcont,'EdgeColor',[.4 .4 .4],'LineWidth',1)
4. ストリームチューブの作成
meshgrid
を使って、ストリームチューブに対する開始位置の配列を作成します。これは、x
の最小値から始まり、y
は20から50の範囲で、z
方向の1つの平面にあります(スライス平面のうちの1つに対応)。
ストリームチューブ(streamtube
)は、指定した位置に描画され、デフォルトの幅の1.25倍にスケーリングされ、発散(幅)の変動を強調します。ベクトル[1.25
30] の2番目の要素は、チューブの周囲に沿ったポイント数を指定します(デフォルトは20です)。滑らかな外観のチューブを維持するために、チューブのサイズが大きくなるに連れて、この値を増加させる必要があります。
データの縦横比(daspect
)
を streamtube
を呼び出す前に設定します。
ストリームチューブは、surfaceオブジェクトなので、(surface プロパティの)設定によりその外観を制御することができます。つぎの例は、surfaceのプロパティを設定して明るい光源と赤色のsurfaceを与えます。
[sx,sy,sz] = meshgrid(xmin,20:3:50,alt); daspect([1,1,1]) % set DAR before calling streamtube htubes = streamtube(x,y,z,u,v,w,sx,sy,sz,[1.25 30]); set(htubes,'EdgeColor','none','FaceColor','r',... 'AmbientStrength',.5)
5. ビューの定義
最後のステップは、ビューを定義し、光源を付加することです(view
, axis
volumebounds
, Projection
, camlight
)。
view(-100,30) axis(volumebounds(x,y,z,wind_speed)) set(gca,'Projection','perspective') camlight left
![]() |
ストリームリボンを使ったCurlの表示 | ストリーム粒子のアニメーションの作成 | ![]() |