Отображение дивергенции с потоковыми трубами

Что могут показать потоковые трубы

Потоковые трубы подобны линиям потоков, кроме труб имеют ширину, обеспечивая другую размерность, которую можно использовать, чтобы представлять информацию.

По умолчанию, графический дисплей MATLAB® расхождение векторного поля шириной трубы. Можно также задать ширины для каждой вершины трубы и таким образом сопоставить другие данные с шириной.

Этот пример использует следующие методы:

  • Потоковые трубы, чтобы указать на направление потока и расхождение векторного поля в наборе данных wind

  • Плоскости разбиения, окрашенные, чтобы указать на скорость токов ветра, наложенных с линией контура, чтобы улучшить видимость

Вводы включают координаты объема, векторных полевых компонентов и стартовых местоположений для потоковых труб.

1. Загрузка данных и вычисление необходимых значений

Загрузите данные и вычислите, значения должны были сделать графики. Эти значения включают:

  • Местоположение плоскостей разбиения (максимальный 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);
    

2. Рисование плоскостей разбиения

Чертите плоскости разбиения (slice) и установите свойства surface создать гладко цветной срез. Используйте 16 цветов от colormap hsv.

hslice = slice(x,y,z,wind_speed,xmax,ymin,alt);
set(hslice,'FaceColor','interp','EdgeColor','none')
colormap hsv(16)

3. Добавление линий контура к плоскостям разбиения

Добавьте линии контура (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)
    

4. Создание потоковых труб

Используйте 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)

5. Определение представления

Задайте представление и добавьте подсветку (view, ось volumebounds, Projection, camlight).

view(-100,30)
axis(volumebounds(x,y,z,wind_speed))
set(gca,'Projection','perspective')
camlight left

Была ли эта тема полезной?