exponenta event banner

Добавление контекста Isocaps в визуализации

Что такое изокапы?

Изокапы - это плоскости, которые подогнаны к пределам изоповерхности, чтобы обеспечить визуальный контекст для изоповерхности. Изокапы показывают вид в поперечном разрезе внутренней части изоповерхности, для которой изокапа обеспечивает торцевой колпачок.

Следующие два изображения иллюстрируют использование изокапов. Первая - изоповерхность без изокапов.

На втором рисунке показан эффект добавления изокапов к той же изоповерхности.

Другие приложения Isocap

Некоторые дополнительные применения изокапов показаны в следующих примерах:

Определение изокап

Изокапы, как и изо-поверхности, создаются как patch графические объекты. Используйте isocaps команда для создания данных для передачи patch. Например:

patch(isocaps(voldata,isoval),...
   'FaceColor','interp',...
...'EdgeColor','none')

создает изокапы для скалярных данных тома voldata по значению isoval. Необходимо создать изоповерхность с использованием тех же данных объема и изовалюты для обеспечения соответствия кромок изоповерхностей.

Настройка патча FaceColor свойство для interp приводит к раскраске, которая сопоставляет значения данных, покрываемые изокапой, с записями карты цветов. Можно также задать другие свойства фрагмента для управления влиянием освещения и раскраски на изокапы.

Добавление изокап к изо-поверхности

В этом примере показано, как задать характеристики окраски и освещения при работе с изокапами. Существует пять основных этапов:

1. Подготовка данных

В этом примере используется 3-D массив случайных (rand) данные для определения данных тома. Затем данные сглаживаются (smooth3).

data = rand(12,12,12);
data = smooth3(data,'box',5);

2. Создание изо-поверхности и задание свойств

Использовать isosurface и patch для создания изоповерхности и задания свойств окраски и освещения. Уменьшите AmbientStrength, SpecularStrength, и DiffuseStrength отраженного света для компенсации яркости двух источников света, используемых для обеспечения более равномерного освещения.

Пересчитать нормали вершин изоповерхности для получения более гладкого освещения (isonormals).

isoval = .5;
h = patch(isosurface(data,isoval),...
   'FaceColor','blue',...
   'EdgeColor','none',...
   'AmbientStrength',.2,...
   'SpecularStrength',.7,...
   'DiffuseStrength',.4);
isonormals(data,h)

3. Создать изокапы и задать свойства

Определите isocaps с использованием тех же данных и изовалюты, что и изоповерхность. Укажите интерполированную раскраску и выберите карту цветов, которая обеспечивает лучшие контрастные цвета с синей изоповерхностью, чем цвета в карте цветов по умолчанию (colormap).

patch(isocaps(data,isoval),...
   'FaceColor','interp',...
   'EdgeColor','none')
colormap hsv

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

Установите пропорции данных в значение [1,1,1] чтобы дисплей был в правильных пропорциях (daspect). Устраните пробел в осях и установите вид на 3-D (axis tight, view).

daspect([1,1,1])
axis tight
view(3)

5. Добавить освещение

Чтобы добавить довольно равномерное освещение, но все же воспользоваться способностью источников света делать видимые тонкие изменения формы, в этом примере используются два источника света, один слева и один справа от камеры (camlight). Используйте освещение Гуро для создания наиболее плавного изменения цвета (lighting).

camlight right
camlight left