exponenta event banner

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) черпает ленты потока из данных векторного объема U, V, W.

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

startx, starty, и startz определите начальные положения струйных лент в центре лент.

Скручивание лент пропорционально скручиванию векторного поля. Ширина лент рассчитывается автоматически.

streamribbon(U,V,W,startx,starty,startz) принимает X, Y, и Z определяются выражением

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

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

streamribbon(vertices,X,Y,Z,cav,speed) предполагает предварительно вычисленные вершины обтекания, угловую скорость скручивания и скорость потока. vertices - массив ячеек из упорядоченных вершин (созданный stream3). X, Y, Z, cav, и speed являются 3-D массивами.

streamribbon(vertices,cav,speed) принимает X, Y, и 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

Figure contains an axes. The axes 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. The axes 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. The axes contains an object of type surface.

Создайте массивы 3-D и конусный график.

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. The axes contains an object of type quiver.

Постройте график из двух наборов поточных лент. Затем определите вид и освещение.

[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