Изопрописные буквы являются плоскостями, которые адаптированы к пределам изоповерхности, чтобы обеспечить визуальный контекст для изоповерхности. Изопрописные буквы показывают перекрестный вид в сечении внутренней части изоповерхности, для которой изопрописная буква обеспечивает заглушку.
Следующие два изображения иллюстрируют использование изопрописных букв. Первой является изоповерхность без изопрописных букв.
Второе изображение показывает эффект добавляющих изопрописных букв к той же изоповерхности.
Некоторые дополнительные приложения изопрописных букв показывают в следующих примерах:
Изопрописные буквы, как изоповерхности, создаются как графические объекты 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