Изопрописные буквы - это плоскости, которые подогнаны к пределам изоповерхности, чтобы обеспечить визуальный контекст для изоповерхность. Изопрописные буквы показывают вид в поперечном сечении внутренней поверхности изоповерхности, для которой изопрописная буква обеспечивает торцевую прописную букву.
Следующие два рисунка иллюстрируют использование изопрописных букв. Первый - изоповерхность без изопрописных букв.
Второй рисунок показывает эффект добавления изопрописных букв к той же изоповерхности.
Некоторые дополнительные применения изопрописных букв показаны в следующих примерах:
Изопрописные буквы, как изоповерхности, создаются как patch
графические объекты. Используйте isocaps
команда, чтобы сгенерировать данные, которые будут переданы в patch
. Для примера:
patch(isocaps(voldata,isoval),... 'FaceColor','interp',... ...'EdgeColor','none')
создает изопрописные буквы для скалярных объемных данных voldata
при значении isoval
. Вы должны создать изоповерхность с помощью тех же объемных данных и изозначение, чтобы убедиться, что ребра изопрописных букв соответствуют изоповерхности.
Установка закрашенная фигура- FaceColor
свойство к interp
Результаты в раскраске, который сопоставляет значения данных, охватываемые записями изопрописной буквы, с записями палитры. Можно также задать другие свойства закрашенной фигуры, чтобы контролировать эффекты подсветки и раскраски на изопрописные буквы.
Этот пример иллюстрирует, как задать характеристики окрашивания и подсветки при работе с изопрописными буквами. Существует пять основных шагов:
Этот пример использует трехмерный массив случайных (rand
) данные для определения объемных данных. Затем данные сглаживаются (smooth3
).
data = rand(12,12,12); data = smooth3(data,'box',5);
Использовать 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)
Определите isocaps
использование тех же данных и изозначение, что и изоповерхность. Задайте интерполированную раскраску и выберите палитру, которая обеспечивает лучшие контрастные цвета с синей изоповерхность, чем в палитре по умолчанию (colormap
).
patch(isocaps(data,isoval),... 'FaceColor','interp',... 'EdgeColor','none') colormap hsv
Установите соотношение сторон данных равным [1,1,1]
так, чтобы отображение было в правильных пропорциях (daspect
). Удалите пустое пространство внутри осей и установите вид равным 3-D (axis
tight
, view
).
daspect([1,1,1]) axis tight view(3)
Чтобы добавить довольно равномерную подсветку, но все же воспользуйтесь способностью источников света делать видимые тонкие изменения формы, в этом примере используются два источника света, один слева и один справа от камеры (camlight
). Используйте подсветку Гуро, чтобы получить самое плавное изменение цвета (lighting
).
camlight right camlight left