スライス平面を使用してボリューム データを表示する
流体データのスライス
スライス平面 (これは平面である必要はありません) は、スライスが存在する領域内でのボリューム データの値をもとに色付けした表面です。スライス平面は、ある調査したいボリューム データ セットに対して興味ある部分を探すのに有効なもので、その部分を発見した後に、他のタイプのグラフを使用して可視化できます (例は slice
を参照してください)。スライス平面は、他のグラフ作成手法が使われた場合 (coneplot
とベクトル データを使用した流線の表示の例を参照)、ボリューム データの境界に視覚可能な内容を付加するのに役立ちます。
スライス平面の作成には、関数 slice
を使用してください。この例では、flow
によって生成されたボリューム データをスライスします。
1. データを調べる
次のコマンドを使用して、ボリューム データを作成します。
[x,y,z,v] = flow;
座標データの最小値と最大値を検出して、ボリューム データの範囲を決めます。
xmin = min(x(:)); ymin = min(y(:)); zmin = min(z(:)); xmax = max(x(:)); ymax = max(y(:)); zmax = max(z(:));
2. X 軸に対してある角度で平面をスライス
座標軸の平面にないスライス平面を作成するには、まず表面を定義し、希望する方向へ回転させます。この例は、ボリューム データと同じ x 座標と y 座標をもつ表面を使用します。
hslice = surf(linspace(xmin,xmax,100),... linspace(ymin,ymax,100),... zeros(100));
x 軸に関して -45 度表面を回転させ、スライス平面を定義するために表面の XData
、YData
、ZData
を保存し、その後表面を削除します。
rotate(hslice,[-1,0,0],-45) xd = get(hslice,'XData'); yd = get(hslice,'YData'); zd = get(hslice,'ZData');
delete(hslice)
3. スライス平面を描く
回転したスライス平面を描画するために、FaceColor
を interp
に設定して、Figure のカラーマップにより色分けし、EdgeColor
を none
に設定します。DiffuseStrength
を .8
に設定して光源を加えた後、より明るくします。
colormap(turbo) h = slice(x,y,z,v,xd,yd,zd); h.FaceColor = 'interp'; h.EdgeColor = 'none'; h.DiffuseStrength = 0.8;
hold
を on
に設定して、xmax
、ymax
、zmin
で直交するスライス平面を 3 つ追加します。これによって、ボリューム データに斜めに切り込んでいる 1 番目の平面の内容が見えるようにします。
hold on hx = slice(x,y,z,v,xmax,[],[]); hx.FaceColor = 'interp'; hx.EdgeColor = 'none'; hy = slice(x,y,z,v,[],ymax,[]); hy.FaceColor = 'interp'; hy.EdgeColor = 'none'; hz = slice(x,y,z,v,[],[],zmin); hz.FaceColor = 'interp'; hz.EdgeColor = 'none';
4. 表示の定義
正しい割合でボリューム データを表示するため、データの縦横比を [1,1,1]
(daspect
) に設定します。軸をボリューム データの周囲に厳密に合わせて調整します (axis
)。座標軸の方向は rotate3d
を使用してはじめに選択することで、最適な view
を決めることができます。
シーンを拡大すると、ボリューム データをより大きく表示します (camzoom
)。投影タイプとして perspective
を選択して、既定の正投影よりも自然な直方体の物体を与えます (camproj
)。
daspect([1,1,1]) axis tight view(-38.5,16) camzoom(1.4) camproj perspective
5. ライティングと色の追加
ライトを付加すると、4 つのスライス平面はそれぞれ光源との角度が異なるので、それらの平面間の境界をよりはっきりさせます (lightangle
)。24 色のみでカラーマップを選択すると (既定の設定は 64 色)、ボリューム データ内の変化を示す手助けとなる可視的な勾配を作成することができます。
lightangle(-45,45) colormap(turbo(24))
次のカラー マッピングの変更では、データに色を割り当てる方法どのようにして変更するかを示します。
カラー マッピングの変更
現在のカラーマップは、スライス平面の色付けを決めます。次の方法で、スライス平面の色を変更することができます。
カラーマップの変更
データ値のカラーへのマッピングの変更
たとえば、-5 から 2.5 の範囲のデータ値にのみ興味があり、カラーマップを使用して低い値を赤色、高い値を青に写像する (既定の turbo
カラーマップの逆) とします。
1. カラーマップのカスタマイズ
関数 colormap
と flipud
を使用して、カラーマップを切り替えます。
colormap(flipud(turbo(24)))
2. 色の範囲の調整
特定のデータを強調するために、色の範囲を調整します。ここでは、-5 (元のデータの範囲は -11.5417 ~ 2.4832) より小さいすべての値が同じ色になるように、色の範囲を -5 ~ 2.4832 に調整します。
clim([-5,2.4832])
R2022a より前: caxis
を使用して色の範囲を調整します。その構文と引数は clim
と同じです。
3. カラー バーの追加
データに対応する色を示すカラー バーを追加します。
colorbar('southoutside')