MATLAB Function Reference | ![]() ![]() |
3次元ベクトルフィールド内で、速度ベクトルを円錐としてプロット
表示
coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz)
coneplot(U,V,W,Cx,Cy,Cz)
coneplot(...,s)
coneplot(...,'quiver')
coneplot(...,'method
')
h = coneplot(...)
詳細
coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz)
は、速度ベクトルをベクトルが示す方向を向き、ベクトルの大きさに比例した円錐としてプロットします。
X
, Y
, Z
は、ベクトル場に対する座標。U
, V
, W
は、ベクトル場を定義します。これらの配列は、同じ次元で、単調で、かつ、meshgrid
で作成されるような3次元の格子になっている必要があります。Cx
, Cy
, Cz
は、ベクトル場の中の円錐の位置を定義します。coneplot(U,V,W,Cx,Cy,Cz)
は、引数X
, Y
, Z
を省略していますが、[X,Y,Z] = meshgrid(1:n,1:m,1:p)
であることを仮定しています。ここで、 [m,n,p]= size(U)
です。
coneplot(...,s)
では、MATLABは、グラフに適合するように円錐を自動的にスケーリングし、その後、スケーリング係数s
を適用します。s
を設定していない場合、1
が使われます。s = 0
の場合、自動的なスケーリングは行われません。
coneplot(...,'quiver')
は、円錐の代わりに矢印で表現します(矢印を使った例題として、quiver3
を参照してください)。
coneplot(...,
'method
')
は、使用する内挿法を設定することができます。 method
には、つぎの文字列を設定することができます。linear
, cubic
, nearest
。 linear
は、デフォルトです(これら3つの内挿法の詳細は、interp3
を参照してください)。
h = coneplot(...)
は、円錐を表示するために使用するpatch
オブジェクトのハンドルを出力します。ユーザは、set
コマンドを使って、円錐のpropertiesを変更することができます。
注意
coneplot
は、グラフに適合するように円錐を自動的にスケーリングします。しかし、各速度ベクトルについては、保存されています。
coneplot
を読み込む前に、軸の縦横比を 1:1:1に設定しておくことをお勧めします。そして、これらの値は、daspect
コマンドを使って、設定することができます。
daspect([1,1,1])
例題
この例題は、長方形の空間の中での空気の運動を表すベクトル3次元データに対して、速度ベクトルコーンを使ってプロットするものです。最終的なグラフは、データをより効率的に表すためにいくつかの強調法を使っています。つぎのものを含んでいます。
データのロードと観察
風のデータセットは、6個の3次元配列を含みます。これらは、u
, v
, w
が、x
, y
, z
で指定された座標系に対する各ベクトル成分です。座標は、3次元の中でデータがサンプリングされる格子点構造を定義します。
データの範囲を設定して、スライス平面を配置する部分とコーンプロットとを行う位置を指定します(min
, max
)。
load wind xmin = min(x(:)); xmax = max(x(:)); ymin = min(y(:)); ymax = max(y(:)); zmin = min(z(:));
コーンプロットの作成
linspace
, meshgrid
)。coneplot
をコールする前に、daspect
を使って、axesの縦横比を設定します。そして、MATLABは、コーンの適切なサイズを決定することができます。FaceColor
, EdgeColor
)。daspect([2,2,1]) xrange = linspace(xmin,xmax,8); yrange = linspace(ymin,ymax,8); zrange = 3:4:15; [cx cy cz] = meshgrid(xrange,yrange,zrange); hcones = coneplot(x,y,z,u,v,w,cx,cy,cz,5); set(hcones,'FaceColor','red','EdgeColor','none')
スライス平面を付加
slice
コマンド用のスカラデータを作成するため(風速に関する)ベクトル場の大きさを計算します。xmin
と xmax
に沿って、y-軸の ymax
、z-軸の zmin
で、スライス平面を作成します。hold
, slice
, FaceColor
, EdgeColor
)。hold on wind_speed = sqrt(u.^2 + v.^2 + w.^2); hsurfaces = slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin); set(hsurfaces,'FaceColor','interp','EdgeColor','none') hold off
ビューの定義
axis
コマンドを使って、軸の範囲をデータのレンジに合わせます。view
で、azimuth = 30 、 elevation = 40 に設定します(rotate3d
は、最適なビューを選択するために有効なコマンドです)。 camproj
)。camzoom
)。axis tight; view(30,40); axis off camproj perspective; camzoom(1.5)
光源は、2つのスライス平面(surfaces) とコーンプロット(patches)に影響を与えます。しかし、各々に対して独立にライトの特性を設定することができます。
camlight
, lighting
)。AmbientStrength
プロパティ値を大きくして、暗青色の可視性を改良します(スライス平面のカラーリングを変更するには、種々のcolormap
を設定することができます)。DiffuseStrength
プロパティ値を増加して、特別なコーンを明るくし、鏡面反射をなくします。camlight right; lighting phong set(hsurfaces,'AmbientStrength',.6) set(hcones,'DiffuseStrength',.8)
参考
isosurface
, patch
, reducevolume
, smooth3
, streamline
, stream2
, stream3
, subvolume
![]() | coneplot | conj | ![]() |