Управление прозрачностью графических объектов
Пожалуй, наиболее впечатляющие и внешне заметные результаты дает применение свойства прозрачности изображений (transparency), доступное только при использовании средств Open GL. Это свойство позволяет строить изображения полупрозрачных струй жидкостей или газов, в которых видны их сгустки или вкрапления твердых тел, изображения галактик со звездными вкраплениями, изображения клеток в биологических объектах и т. д.
В книгу «MATLAB. Using MATLAB Graphics. Version 6.0» введен обширный раздел, посвященный управлению прозрачностью объектов. Ниже представлена краткая «выжимка» из этого раздела.
Свойство прозрачности основано на представлении изображений в виде отдельных слоев, что обычно требует применения многомерных массивов. Данные о прозрачности размещаются в матрице размера mxn AlphaData, элементы которой должны иметь тип double или uint8 (элементы типа NaN недопустимы). Возможности задания прозрачности поддерживаются графическими файлами с расширением PNG. В изображениях, хранящихся в этих файлах, возможна поддержка кодирования цветов с разным разрешением - вплоть до 48 бит при RGB графике.
Для управления прозрачностью служит специальная системная переменная alpha, значение которой лежит в пределах от 0 до 1. Если построенный вами графический объект содержит элементы прозрачности, то для их наблюдения нужно задать команду alpha(x), где х задает уровень прозрачности. Например, задав alpha(0.5), мы получим «полупрозрачное» изображение, на котором будут видны обычно скрытые его детали.
Приведем наглядный пример использования свойств прозрачности из описания графики системы MATLAB, где строится график скорости жидкости на пути ракеты подводного базирования в бесконечной емкости:
[х у z v] = flow;
p=patch(isosurface(x,y,z,v,-3));
isonormals(x,y,z,v,p);
set(p,'facecolor','blue','edgecolor','none');
daspect([1 1 1]);
view(3); axis tight; grid on;
camlight; lighting gouraud;
Здесь строится график трехмерной фигуры flow (течение). Она представлена тремя массивами своих точек х, у и z и дополнительным массивом класса AlphaData — v. При первом построении свойство прозрачности отсутствует (по умолчанию) и построенная фигура будет иметь вид, представленный на рис. 7.6.
Рис. 7.6. Трехмерная фигура в обычном представлении (без свойства прозрачности)
Если исполнить команду alpha(0.5), то в массиве AlphaData будут заданы эле-менхы, обеспечивающие степень прозрачности 0.5. При этом изображение объекта будет иметь вид, представленный на рис. 7.7. Теперь на нем четко видна скрытая ранее твердая сердцевина фигуры и даже проглядывают координатные оси.
Рис. 7.7. Трехмерная фигура с установкой свойства прозрачности
Более подробные сведения об использовании свойства прозрачности можно найти в обширной документации по графике в формате PDF. Эта документация в виде файла graphg.pdf объемом свыше 12 Мбайт поставляется с системой MAT-LAB 6.