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

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

Плоскость разбиения (который не должен быть плоским) является поверхностью, которая берет окраску на основе значений данных об объеме в области, где срез расположен. Плоскости разбиения полезны для зондирования наборов данных объема, чтобы обнаружить, где интересные области существуют, который можно затем визуализировать с другими типами графиков (см. 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 и добавьте еще три ортогональных плоскости разбиения в xmaxymax , и 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')