Main Content

streamribbon

根据向量三维体数据生成三维流带图

  • 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 绘制流带。

数组 XYZ 用于定义 UVW 的坐标,它们必须是单调的,无需间距均匀。XYZ 必须具有相同数量的元素,就像由 meshgrid 生成一样。

startx, startystartz 定义流带的起始位置(中心处)。

条带的扭曲度与向量场的旋度成比例。条带的宽度将会自动计算。

streamribbon(U,V,W,startx,starty,startz) 假定 XYZ 由以下表达式确定

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

其中 [m,n,p] = size(U)

streamribbon(vertices,X,Y,Z,cav,speed) 使用预先计算的流线图顶点、旋转角速度和流速。vertices 是流线图顶点的元胞数组(就像由 stream3 生成一样)。XYZcavspeed 是三维数组。

streamribbon(vertices,cav,speed) 假定 XYZ 由以下表达式确定

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

其中 [m,n,p] = size(cav)

streamribbon(vertices,twistangle) 将包含向量 twistangle 的元胞数组用于条带的扭曲度(以弧度为单位)。verticestwistangle 的每个对应元素的大小必须相等。

streamribbon(...,width) 将条带的宽度设置为 width

streamribbon(axes_handle,...) 将图形绘制到句柄为 axes_handle 的坐标区对象中,而不是当前坐标区对象 (gca) 中。

h = streamribbon(...) 将句柄(每个起始点一个句柄)向量返回到 surface 对象。

示例

全部折叠

使用流带指示数据集中的流动情况。

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

使用预先计算的顶点数据、旋转平均速度和速度指示流动情况。

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

利用预先计算的数据,您可以使用从单一数据源计算的值之外的值。在这种情况下,相对于上一示例,速度按照因子 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

创建三维数组和圆锥图。

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');

绘制两组流带图。然后,定义视图和光照。

[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 之前推出