Визуализация векторных данных объема

Строки, частицы, ленты, потоки, трубы и конусы

Векторные данные объема содержат больше информации, чем скалярные данные, потому что каждая координатная точка в наборе данных имеет три значения, сопоставленные с нею. Эти значения задают вектор, который представляет и значение и направление. Скорость потока жидкости является примером векторных данных.

Много методов полезны для визуализации векторных данных:

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

  • Потоковые частицы являются маркерами, которые прослеживают линии потоков и полезны для создания анимаций линии потоков.

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

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

  • Конические графики представляют значение и направление данных в каждой точке путем отображения конического наконечника стрелки или стрелки.

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

Используя скалярные методы с векторными данными

Методы визуализации, такие как срезы контура, плоскости разбиения и изоповерхности требуют скалярных данных объема. Можно использовать эти методы с векторными данными путем взятия значения векторов. Например, набор данных wind возвращает три координатных массива и три векторных массива компонента, u, v, w. В этом случае значение векторов скорости равняется скорости ветра в каждой соответствующей координатной точке в объеме.

wind_speed = sqrt(u.^2 + v.^2 + w.^2);

Массив wind_speed содержит скалярные значения для данных объема. Полноценность информации, произведенной этим подходом, однако, зависит от того, какое физическое явление представлено значением ваших векторных данных.

Определение отправных точек для потоковых графиков

Потоковые графики (линии потоков, ленты, трубы, и конусы или стрелки) иллюстрируют поток 3-D векторного поля. Потоковые функции построения графика MATLAB® (streamline, streamribbon, streamtube, coneplot, stream2, stream3) все требуют, чтобы вы задали точку, в которой вы хотите начать каждую потоковую трассировку.

Определение отправных точек

Обычно знание характеристик ваших данных помогает вам выбрать отправные точки. Информация, такая как первичное направление потока и область значений координат данных помогает вам решить, где оценить данные.

Функция streamslice полезна для исследования ваших данных. Например, эти операторы чертят срез через векторное поле в z значении на полпути в области значений.

load wind
zmax = max(z(:)); zmin = min(z(:));
streamslice(x,y,z,u,v,w,[],[],(zmax-zmin)/2)

Этот потоковый график среза показывает, что поток находится в положительном направлении X и также позволяет вам выбрать отправные точки в обоих x и y. Вы могли создать подобные графики, которые нарезают объем в x-z плоскости или y-z плоскости, чтобы получить дальнейшее понимание области значений и ориентации ваших данных.

Определение массивов координат отправной точки

Чтобы задать отправную точку для одной линии потоков, вам нужны x-, y-, и z-координаты точки. Команда meshgrid обеспечивает удобный способ создать массивы отправных точек. Например, вы могли выбрать следующие отправные точки из данных ветра, отображенных в предыдущем потоковом срезе.

[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);

Этот оператор задает отправные точки как всю ложь на x = 80, y в пределах от 20 - 50, и z в пределах от от 0 до 15. Можно использовать plot3, чтобы отобразить местоположения.

plot3(sx(:),sy(:),sz(:),'*r');
axis(volumebounds(x,y,z,u,v,w))
grid on 
set(gca,'BoxStyle','full','Box','on')
daspect([2 2 1])

Вы не должны использовать трехмерные массивы, такие как возвращенные meshgrid, но размер каждого массива должен быть тем же самым, и meshgrid обеспечивает удобный способ сгенерировать массивы, когда у вас нет равного количества уникальных значений в каждой координате. Можно также задать массивы отправной точки как векторы - столбцы. Например, meshgrid возвращает трехмерные массивы:

[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
whos
  Name      Size             Bytes  Class     Attributes

  sx        4x1x4              128  double              
  sy        4x1x4              128  double              
  sz        4x1x4              128  double      

Кроме того, вы могли использовать 16 1 векторы - столбцы с соответствующими элементами этих трех массивов, составляющих координаты каждой отправной точки. (Это - эквивалент индексации значений, возвращенных meshgrid как sx(:), sy(:) и sz(:).)

Например, добавление линий потоков к отправным точкам производит:

streamline(x,y,z,u,v,w,sx(:),sy(:),sz(:))

Доступ к подобластям данных объема

Функция subvolume обеспечивает простой способ получить доступ к подобластям набора данных объема. subvolume позволяет вам выбрать видимые области на основе пределов вместо того, чтобы использовать оператор двоеточия, чтобы индексировать в трехмерные массивы, которые задают объемы. Рассмотрите следующие два подхода к созданию данных для подобъема — индексирующий с оператором двоеточия и использующий subvolume.

Индексация с оператором двоеточия

Когда вы индексируете массивы, вы работаете со значениями, которые задают элементы в каждой размерности массива.

load wind
xsub = x(1:10,20:30,1:7);
ysub = y(1:10,20:30,1:7);
zsub = z(1:10,20:30,1:7);
usub = u(1:10,20:30,1:7);
vsub = v(1:10,20:30,1:7);
wsub = w(1:10,20:30,1:7);

Используя Функцию подобъема

subvolume позволяет вам использовать координатные значения, которые можно считать из осей. Например:

lims = [100.64 116.67 17.25 28.75 -0.02 6.86];
[xsub,ysub,zsub,usub,vsub,wsub] = subvolume(x,y,z,u,v,w,lims);

Можно затем использовать данные подобъема в качестве входных параметров к любой функции, требующей векторных данных объема.

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