exponenta event banner

Изменение прозрачности изображений, фрагментов или поверхностей

В этом примере показано, как изменить прозрачность изображений, фрагментов и поверхностей.

Прозрачность для всех объектов в осях

Значения прозрачности называются альфа-значениями. Используйте alpha задание прозрачности для всех объектов изображения, фрагмента и поверхности в текущих осях. Задайте значение прозрачности от 0 (полностью прозрачный) до 1 (полностью непрозрачный).

t = 0:0.1:2*pi;
x = sin(t);
y = cos(t);

figure
patch(x,y,'r')            % make a red circular patch
patch(x+0.8,y,'g')        % make a green circular path
patch(x+0.4,y+0.8,'b')    % make a blue circular path
axis square tight         % set axis to square

alpha(0.3)                % set all patches transparency to 0.3

Figure contains an axes. The axes contains 3 objects of type patch.

Прозрачность для отдельных поверхностей

Прозрачность поверхности определяется ее AlphaData собственность. Задайте для альфа-данных скалярное значение или матрицу значений, задающих прозрачность каждой вершины поверхности. FaceAlpha свойство указывает, как прозрачность граней поверхности определяется из прозрачности вершин.

[X,Y,Z] = peaks(20);
s2 = surf(X,Y,Z);

s2.AlphaData = gradient(Z);    % set vertex transparencies
s2.FaceAlpha = 'flat';

Figure contains an axes. The axes contains an object of type surface.

Прозрачность для отдельных изображений

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

Например, используйте прозрачность для наложения двух изображений. Сначала отобразите изображение Земли.

earth = imread('landOcean.jpg');
image(earth)    % display Earth image
axis image

Figure contains an axes. The axes contains an object of type image.

Затем добавьте слой облака к изображению Земли с помощью прозрачности.

clouds = imread('cloudCombined.jpg');
image(earth)
axis image
hold on

im = image(clouds);
im.AlphaData = max(clouds,[],3);    % set transparency to maximum cloud value
hold off

Figure contains an axes. The axes contains 2 objects of type image.

Прозрачность отдельных исправлений

Прозрачность исправления определяется его FaceAlpha и FaceVertexAlphaData свойства. Для обеспечения постоянной прозрачности по всему патчу установите значение FaceVertexAlphaData в константу от 0 (полностью прозрачный) до 1 (полностью непрозрачный) и установите значение FaceAlpha свойство для 'flat'.

cla
p1 = patch(x,y,'r');             % make a red circular patch
axis square tight                % set axis to square

p1.FaceVertexAlphaData = 0.2;    % Set constant transparency 
p1.FaceAlpha = 'flat' ;          % Interpolate to find face transparency

Figure contains an axes. The axes contains an object of type patch.

Для прозрачности, изменяющейся в пределах патча, установите значение FaceVertexAlphaData к матрице значений, задающей прозрачность в каждой вершине или каждой грани фрагмента. FaceAlpha свойство затем указывает, как прозрачность грани определяется с помощью FaceVertexAlphaData. Если альфа-данные указаны для вершин, FaceAlpha необходимо установить значение 'interp'.

p1.FaceVertexAlphaData = x';   % Set vertex transparency to x values
p1.FaceAlpha = 'interp' ;      % Interpolate to find face transparency

Figure contains an axes. The axes contains an object of type patch.

Прозрачность с наложением текстур

Сопоставление текстур позволяет сопоставить 2-D изображение с 3-D поверхностью. Изображение можно сопоставить с поверхностью, установив CData для данных изображения и установки FaceColor свойство должно быть 'texturemap'.

В этом примере создается 3-D вид земли и облаков. Он создает сферические поверхности и использует текстуру для отображения изображений земли и облаков на поверхности.

[px,py,pz] = sphere(50);                % generate coordinates for a 50 x 50 sphere

cla
sEarth = surface(py, px ,flip(pz));   
sEarth.FaceColor = 'texturemap';        % set color to texture mapping
sEarth.EdgeColor = 'none';              % remove surface edge color
sEarth.CData = earth;                   % set color data 

hold on
sCloud = surface(px*1.02,py*1.02,flip(pz)*1.02); 

sCloud.FaceColor = 'texturemap';        % set color to texture mapping
sCloud.EdgeColor = 'none';              % remove surface edge color
sCloud.CData = clouds;                  % set color data 
 
sCloud.FaceAlpha = 'texturemap';        % set transparency to texture mapping
sCloud.AlphaData = max(clouds,[],3);    % set transparency data 
hold off

view([80 2])                            % specify viewpoint 
daspect([1 1 1])                        % set aspect ratio
axis off tight                          % remove axis and set limits to data range

Изображения, используемые в этом примере, получены с видимой Земли.

Зачет: NASA Goddard Space Flight Center Image by Reto Stöckli (поверхность суши, мелководье, облака). Усовершенствования Роберта Симмона (цвет океана, композит, 3D глобусов, анимация). Данные и техническая поддержка: MODIS Land Group; Группа поддержки научных данных MODIS; Группа МОДИС по атмосфере; MODIS Ocean Group Дополнительные данные: Центр данных USGS EROS (топография); Полевой центр наземного дистанционного зондирования USGS Flagstaff (Антарктика); Оборонная метеорологическая спутниковая программа (огни города).

См. также

| |