Трубы потока аналогичны линиям потока, за исключением того, что трубы имеют ширину, что обеспечивает другой размер, который можно использовать для представления информации.
По умолчанию на графике MATLAB ® отображается расхождение векторного поля по ширине трубки. Можно также определить ширину для каждой вершины трубы и таким образом сопоставить другие данные с шириной.
В этом примере используются следующие методы:
Поточные трубки для указания направления потока и расхождения векторного поля в wind набор данных
Секущие плоскости, окрашенные для указания скорости ветровых течений, наложенных контурной линией для улучшения видимости
Входные данные включают координаты объема, компоненты векторного поля и начальные местоположения труб потока.
Загрузите данные и рассчитайте значения, необходимые для построения графиков. Эти значения включают в себя:
Расположение плоскостей среза (не более x, минимум yи значение высоты)
Минимум x значение для начала поточных труб
Скорость ветра (величина векторного поля)
load wind
xmin = min(x(:));
xmax = max(x(:));
ymin = min(y(:));
alt = 7.356; % z value for slice and streamtube plane
wind_speed = sqrt(u.^2 + v.^2 + w.^2);
Нарисуйте плоскости среза (slice) и установить surface для создания плавно окрашенного фрагмента. Используйте 16 цветов из hsv
colormap.
hslice = slice(x,y,z,wind_speed,xmax,ymin,alt); set(hslice,'FaceColor','interp','EdgeColor','none') colormap hsv(16)
Добавить горизонтали (contourslice) к плоскостям среза. Отрегулируйте интервал горизонталей таким образом, чтобы линии соответствовали цветовым границам в плоскостях среза:
Звонить caxis для получения текущих пределов цвета.
Установка метода интерполяции, используемого contourslice кому linear для согласования со значением по умолчанию, используемым slice.
color_lim = caxis; cont_intervals = linspace(color_lim(1),color_lim(2),17); hcont = contourslice(x,y,z,wind_speed,xmax,ymin,... alt,cont_intervals,'linear'); set(hcont,'EdgeColor',[.4 .4 .4],'LineWidth',1)
Использовать meshgrid для создания массивов для начальных точек для труб потока, которые начинаются как минимум x значение, диапазон от 20 до 50 дюймов y, и лежат в одной плоскости в z (соответствует одной из плоскостей среза).
Трубы потока (streamtube) рисуются в указанных местах и масштабируются в 1,25 раза больше ширины по умолчанию, чтобы подчеркнуть изменение дивергенции (ширины). Второй элемент в векторе [1.25 30] указывает количество точек по окружности трубки (по умолчанию 20). Можно увеличить это значение по мере увеличения размера трубки, чтобы сохранить гладкий вид трубки.
Установите пропорции данных (daspect) перед вызовом streamtube.
Поточные трубы являются объектами поверхности, поэтому можно управлять их внешним видом, задав свойства поверхности. В этом примере задаются свойства поверхности для получения ярко освещенной красной поверхности.
[sx,sy,sz] = meshgrid(xmin,20:3:50,alt);
daspect([1,1,1]) % set DAR before calling streamtube
htubes = streamtube(x,y,z,u,v,w,sx,sy,sz,[1.25 30]);
set(htubes,'EdgeColor','none','FaceColor','r',...
'AmbientStrength',.5)
Определите вид и добавьте освещение (view, axis
volumebounds, Projection, camlight).
view(-100,30) axis(volumebounds(x,y,z,wind_speed)) set(gca,'Projection','perspective') camlight left
