Исследование объемов с плоскостями разбиения

Разрезание данных потока жидкости

Плоскость разбиения (который не должен быть плоским) является поверхностью, которая берет окраску на основе значений данных об объеме в области, где срез расположен. Плоскости разбиения полезны для зондирования наборов данных объема, чтобы обнаружить, где интересные области существуют, который можно затем визуализировать с другими типами графиков (см. пример slice). Плоскости разбиения также полезны для добавления визуального контекста к связанному из объема, когда другие методы построения графика также используются (см. coneplot и Графики Линии потоков Векторных Данных для примеров).

Используйте функцию slice, чтобы создать плоскости разбиения. Этот пример срезы через объем сгенерирован flow.

1. Исследование данных

Сгенерируйте данные об объеме с командой:

[x,y,z,v] = flow;

Определите область значений объема путем нахождения минимума и максимума координатных данных.

xmin = min(x(:)); 
ymin = min(y(:)); 
zmin = min(z(:));

xmax = max(x(:)); 
ymax = max(y(:)); 
zmax = max(z(:));

2. Плоскость разбиения под углом к осям X

Чтобы создать плоскость разбиения, которая не лежит в плоскости осей, сначала задайте поверхность и вращайте ее к желаемой ориентации. Этот пример использует поверхность, которая имеет тот же x-и y-координаты как объем.

hslice = surf(linspace(xmin,xmax,100),...
   linspace(ymin,ymax,100),...
   zeros(100));

Вращайте поверхность-45 градусами об оси X и сохраните поверхностный XData, YData и ZData, чтобы задать плоскость разбиения; затем удалите поверхность.

rotate(hslice,[-1,0,0],-45)
xd = get(hslice,'XData');
yd = get(hslice,'YData');
zd = get(hslice,'ZData');

delete(hslice)

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

Чертите вращаемую плоскость разбиения, устанавливая FaceColor на interp так, чтобы это было окрашено палитрой фигуры и установило EdgeColor на none. Увеличьте DiffuseStrength до .8, чтобы сделать это плоское сияние более ярко после добавления источника света.

figure
colormap(jet)
h = slice(x,y,z,v,xd,yd,zd);
h.FaceColor = 'interp';
h.EdgeColor = 'none';
h.DiffuseStrength = 0.8;

Установите hold на on и добавьте еще три ортогональных плоскости разбиения в xmax, ymax и zmin, чтобы обеспечить контекст для первой плоскости, который срезы через объем под углом.

hold on
hx = slice(x,y,z,v,xmax,[],[]);
hx.FaceColor = 'interp';
hx.EdgeColor = 'none';

hy = slice(x,y,z,v,[],ymax,[]);
hy.FaceColor = 'interp';
hy.EdgeColor = 'none';

hz = slice(x,y,z,v,[],[],zmin);
hz.FaceColor = 'interp';
hz.EdgeColor = 'none';

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

Чтобы отобразить объем в правильных пропорциях, установите соотношение сторон данных на [1,1,1] (daspect). Настройте ось, чтобы соответствовать плотно вокруг объема (axis). Ориентация осей может быть выбрана первоначально с помощью rotate3d, чтобы определить лучший view.

Увеличивание масштаб сцены обеспечивает большее представление объема (camzoom). Выбор типа проекции perspective дает прямоугольные твердые более естественные пропорции, чем ортогональная проекция по умолчанию (camproj).

daspect([1,1,1])
axis tight
view(-38.5,16)
camzoom(1.4)
camproj perspective

5. Добавление подсветки и определение цветов

Добавление света к сцене делает контуры между этими четырьмя плоскостями разбиения более очевидными, потому что каждая плоскость формирует различный угол с источником света (lightangle). Выбор палитры только с 24 цветами (значение по умолчанию равняется 64) создает видимые градации, что справка указывает на изменение в объеме.

lightangle(-45,45)
colormap (jet(24))

Измените Цветное Отображение, показывает, как изменить, как данные сопоставлены с цветом.

Изменение цветного отображения

Текущая палитра определяет окраску плоскостей разбиения. Это позволяет вам изменить плоскость разбиения, окрашивающую:

  • Изменение палитры

  • Изменение отображения значения данных, чтобы окрасить

Предположим, например, вы интересуетесь значениями данных только между-5 и 2.5 и хотели бы использовать палитру, которая сопоставила нижние значения с красными и более высокие значения к блюзу (то есть, противоположность палитры jet по умолчанию).

1. Настройка палитры

Инвертируйте палитру с помощью colormap и flipud:

colormap (flipud(jet(24)))

2. Корректировка цветных пределов

Настройте цветные пределы, чтобы подчеркнуть какую-то конкретную область значений данных интереса. Настройте цветные пределы, чтобы колебаться от-5 до 2,4832, чтобы сопоставить любое значение ниже, чем значение-5 (исходные данные колебались от-11.5417 до 2,4832) в тот же цвет. Для получения информации о цветном отображении смотрите, что caxis функционирует.

caxis([-5,2.4832])

3. Добавление цветной полосы

Добавьте цветную полосу, чтобы обеспечить ключ для отображения данных к цвету.

colorbar('horiz')