Main Content

streamribbon

3 次元ストリーム リボン プロットのベクトル ボリューム データからの作成

  • 3-D stream ribbon plot from vector volume data

構文

streamribbon(X,Y,Z,U,V,W,startx,starty,startz)
streamribbon(U,V,W,startx,starty,startz)
streamribbon(vertices,X,Y,Z,cav,speed)
streamribbon(vertices,cav,speed)
streamribbon(vertices,twistangle)
streamribbon(...,width)
streamribbon(axes_handle,...)
h = streamribbon(...)

説明

streamribbon(X,Y,Z,U,V,W,startx,starty,startz) は、ベクトル ボリューム データ UVW からストリーム リボンを描画します。

UVW の座標を定義する配列 XY、および Z は、単調でなければなりませんが、等間隔でなくても構いません。また XY、および Z は、meshgrid で作成されたかのように、同じ数の要素が含まれていなければなりません。

startxstarty、および startz は、ストリーム リボンの開始位置をリボンの中心に定義します。

リボンのねじれは、ベクトル場のカールに比例します。リボンの幅は、自動的に計算されます。

streamribbon(U,V,W,startx,starty,startz) は、XY、および Z が以下の式によって決定されると仮定します。

[X,Y,Z] = meshgrid(1:n,1:m,1:p)

ここで [m,n,p] = size(U) です。

streamribbon(vertices,X,Y,Z,cav,speed) は、事前計算済みの流線頂点、回転角速度、フロー速度を前提としています。vertices は、流線頂点の cell 配列 (stream3 により生成) です。XYZcav、および speed は、3 次元配列です。

streamribbon(vertices,cav,speed) は、XY、および Z が以下の式によって決定されると仮定します。

[X,Y,Z] = meshgrid(1:n,1:m,1:p)

ここで、[m,n,p] = size(cav) です。

streamribbon(vertices,twistangle) は、リボンのねじれ (ラジアン単位) に、ベクトルの cell 配列 twistangle を使用します。verticestwistangle にそれぞれ対応する要素のサイズは、等しい必要があります。

streamribbon(...,width) は、リボンの幅を width に設定します。

streamribbon(axes_handle,...) は、現在の axes オブジェクト (gca) ではなく、ハンドル axes_handle をもつ axes オブジェクトにプロットします。

h = streamribbon(...) は、surface オブジェクトのハンドル (開始点ごとに 1 つ) のベクトルを返します。

すべて折りたたむ

ストリーム リボンを使用してデータセットでのフローを表します。

load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
streamribbon(x,y,z,u,v,w,sx,sy,sz);
axis tight
shading interp
view(3);
camlight
lighting gouraud

Figure contains an axes object. The axes object contains 16 objects of type surface.

事前計算済みの頂点データ、平均回転速度、および速度を使用してフローを表します。

load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
verts = stream3(x,y,z,u,v,w,sx,sy,sz);
cav = curl(x,y,z,u,v,w);
spd = sqrt(u.^2 + v.^2 + w.^2).*.1;
streamribbon(verts,x,y,z,cav,spd);
axis tight
shading interp
view(3);
camlight; 
lighting gouraud

Figure contains an axes object. The axes object contains 16 objects of type surface.

事前計算済みのデータを使用すると、単一データ源から計算された値以外の値を使用できます。この場合、スピードは、前の例と比較すると約 10 倍遅くなっています。

ストリーム リボンのねじれ角を指定します。

t = 0:.15:15;
verts = {[cos(t)' sin(t)' (t/3)']};
twistangle = {cos(t)'};
streamribbon(verts,twistangle);
axis tight
shading interp
view(3)
camlight 
lighting gouraud

Figure contains an axes object. The axes object contains an object of type surface.

3 次元配列とコーン プロットを作成します。

xmin = -7; xmax = 7;
ymin = -7; ymax = 7; 
zmin = -7; zmax = 7; 
x = linspace(xmin,xmax,30);
y = linspace(ymin,ymax,20);
z = linspace(zmin,zmax,20);
[x,y,z] = meshgrid(x,y,z);
u = y; 
v = -x; 
w = 0*x+1;
[cx,cy,cz] = meshgrid(linspace(xmin,xmax,30),...
   linspace(ymin,ymax,30),[-3 4]);
h = coneplot(x,y,z,u,v,w,cx,cy,cz,'quiver');
set(h,'Color','k');

Figure contains an axes object. The axes object contains an object of type quiver.

2 セットのストリーム リボンをプロットします。その後、ビューとライティングを定義します。

[sx,sy,sz] = meshgrid([-1 0 1],[-1 0 1],-6);
streamribbon(x,y,z,u,v,w,sx,sy,sz);
[sx,sy,sz] = meshgrid([1:6],[0],-6);
streamribbon(x,y,z,u,v,w,sx,sy,sz);
shading interp
view(-30,10) 
axis off tight
camproj perspective
camva(66)
camlookat 
camdolly(0,0,.5,'fixtarget')
camlight

拡張機能

バージョン履歴

R2006a より前に導入