可視化手法 | ![]() |
つぎの例は、wind
データに対する速度ベクトルのコーンプロットを行います。生成されたグラフは、つぎの可視化手法を利用します。
1. 等特性サーフェスの作成
データの矩形領域内で等特性サーフェスを表示することにより、コーンプロットに対する視覚状態の内容を与えます。等特性サーフェスの作成には、つぎのステップが必要です。
isosurface
および patch
を使って、直方体内で風速が特定の値と等しい点を表示する等特性サーフェスを描画します。等特性サーフェス内の領域は、より高速で、等特性サーフェスの領域外は低速です。isonormals
を使うことにより、等特性サーフェスの描画に用いられる三角形から法線を計算するのではなく、物体データから等特性サーフェスの頂点の法線を計算します。これらの法線は、通常より正確な結果を生成します。FaceColor
, EdgeColor
)。load wind wind_speed = sqrt(u.^2 + v.^2 + w.^2); hiso = patch(isosurface(x,y,z,wind_speed,40)); isonormals(x,y,z,wind_speed,hiso) set(hiso,'FaceColor','red','EdgeColor','none');
2. 等特性サーフェスにエンドキャップを付加
Isocaps
は、物体の断面を表示するスライス平面と似ています。それらは、等特性サーフェスのエンドキャップになるように設計されています。等特性エンドキャップに対して内挿されたフェースカラーを用いることにより、カレントのカラーマップのカラーにデータ値がマッピングされます。等特性サーフェスに対してエンドキャップを作成するには、同じ等値で定義します(isocaps
, patch
,
colormap
)。
hcap = patch(isocaps(x,y,z,wind_speed,40),... 'FaceColor','interp',... 'EdgeColor','none'); colormap hsv
3. コーンの最初のセットを作成
daspect
を使って、 coneplot
を実行する前にaxesのデータの縦横比を設定します。reducepatch
を使って、面と頂点の数を減らします(これで、グラフ上にコーンが多すぎないようにします)。daspect([1,1,1]); [f verts] = reducepatch(isosurface(x,y,z,wind_speed,30),0.07); h1 = coneplot(x,y,z,u,v,w,verts(:,1),verts(:,2),verts(:,3),3); set(h1,'FaceColor','blue','EdgeColor','none');
4. 2番目のコーンの集合を作成
xrange = linspace(min(x(:)),max(x(:)),10); yrange = linspace(min(y(:)),max(y(:)),10); zrange = 3:4:15; [cx,cy,cz] = meshgrid(xrange,yrange,zrange); h2 = coneplot(x,y,z,u,v,w,cx,cy,cz,2); set(h2,'FaceColor','green','EdgeColor','none');
5. ビューの定義
axis
コマンドを使って、軸の範囲をデータの最小値と最大値と等しく設定し、グラフをボックスで囲んで物体の感覚きを改良します(box
)。camproj
, camzoom
,
view
)。axis tight box on camproj perspective camzoom(1.25) view(65,45)
6. 光源の付加
光源を付加し、等特性サーフェスの滑らかなライティングに対してPhongライティングを使用します(Phongライティングはzbufferレンダラが必要です)。等特性エンドキャップに対するバックグランドのライティングの強さを増加させて、より明るくします(camlight
, lighting
,
AmbientStrength
)。
camlight(-45,45) set(gcf,'Renderer','zbuffer'); lighting phong set(hcap,'AmbientStrength',.6)
![]() |
ストリーム粒子のアニメーションの作成 |