streamribbon

3-D потоковый график ленты из векторных данных об объеме

Синтаксис

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.

Массивы XY, и Z, которые задают координаты для UV, и W, должно быть монотонным, но не должны быть расположенными равными интервалами. XY, и Z должен иметь то же число элементов, как будто произведенный meshgrid.

startx, starty, и 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 массив ячеек оптимальных вершин (как произведено stream3XYZ, cav, и speed трехмерные массивы.

streamribbon(vertices,cav,speed) принимает XY, и Z определяются выражением

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

где [m,n,p] = size(cav).

streamribbon(vertices,twistangle) использует массив ячеек векторов twistangle для скручивания лент (в радианах). Размер каждого соответствующего элемента vertices и twistangle должно быть равным.

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