介绍
我试图强调球面上的某个区域,这个区域应该被着色为不透明(alpha=1.0),球体的其他部分应该被着色为半透明(alpha=0.5)。
问题
考虑到WAlpha(Data >= DummyValue) = 1.0
和WAlpha(Data < DummyValue) = 0.5
,以下命令无法按预期工作:
surf(X, Y, Z, Data, 'AlphaData', WAlpha, 'FaceAlpha', 'interp');
它将所有未选定的区域绘制为完全透明:
注意
将“FaceAlpha”设置为标量值时,我没有问题(即这不是我的图形卡的问题):
surf(X, Y, Z, Data, 'AlphaData', WAlpha, 'FaceAlpha', 0.5);
源代码
以下是我为重现问题而创建的非常短的伪代码的链接:link
请让我知道,如果你有任何其他想法强调选定的地区,而不是使用透明度。
最佳答案
下面是快速测试:
%# surface data
Z = membrane;
%# alpha-transparency matrix
A = ones(size(Z))*0.3; %# transparent by default
A(abs(Z)>0.5) = 1; %# make certain region opaque
%# plot
figure('Renderer','opengl')
surf(Z, 'AlphaData',A, 'AlphaDataMapping','none', ...
'FaceAlpha','interp', 'EdgeColor','none')
结果: