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 являются трехмерными массивами.

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.

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

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