将数据映射给透明度

alpha数据与颜色数据类似,创建Surface对象时,MATLAB会将颜色数据数组中的每个元素映射到颜色图中的一种颜色。近似地,alpha数据中的每个元素会映射到alpha查找表中的一个透明度值。

用AlphaData属性指定曲面和图像的alpha值。对于Patch对象,则使用FaceVertexAlphaData属性。

可以控制MATLAB如何用下面的属性解释alpha数据:

FaceAlpha和EdgeAlpha属性—使得可以选择刻面或插值渲染方式。如果设置为单一透明度值,则MATLAB会将这个值应用于所有小面和边,而且不使用alpha数据。

AlphaDataMapping和ALim属性—确定MATLAB如何将alpha数据映射到alpha查找表。默认时,MATLAB会将alpha数据比例化到[0 1]范围内。

Alphamap属性—包含实际的透明度值。

注意,描述颜色和透明度的一些属性的默认值还是有一些差别,因为,与颜色相比,透明度不是默认显示的。表4-3列出了这些差别。

表4-3 颜色属性和alpha属性默认值的差异

颜色属性 默认值 alpha 属性 默认值
FaceColor flat FaceAlpha 1
CData 等于ZData AlphaData和FaceVertexAlphaData 1

为了使用非标量alpha数据,需要将alpha数据指定为一个数组,这个数组的大小可以确定为:

图形和曲面的CData。

面片的FaceVertexAlphaData属性中定义的小面数目或顶点数目。

一旦指定了大小合适的alpha数据数组,就可以选择要使用的小面和边的渲染方法。

可以用AlphaDataMapping属性控制alpha数据向alpha查找表的映射。有3种可能的映射:

none—将alpha数据中的值解释为透明度值(数据值必须界于0和1之间,或者是0或1)。这是默认的映射方法。

scaled—比例化映射。与颜色的比例化映射原理相同,可以参照。

direct—直接将alpha数据作为索引值映射到alpha查找表。

下面用peaks函数返回的数据绘制一个刻面图。刻面图的颜色通过建立与z数据梯度的映射关系得到。在命令窗口键入下面的命令行:

code.matlab
>> [x,y,z]=peaks(30);
>> surf(x,y,z,gradient(z)); axis tight

生成图4-4。

Document Image Document Image
\[\]

图4-4原始刻面图 图4-5 添加透明度以后的刻面图

可以按照相同的映射方法得到透明度。即

code.matlab
>> surf(x,y,z,'FaceAlpha','flat',...
     'AlphaDataMapping','scaled',...
     'AlphaData',gradient(z),...
     'FaceColor','blue');
>> axis tight

添加透明度以后的曲面图如图4-5所示。