简介
我试图强调球形表面上的某个区域,说这个区域应该着色为不透明(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');
它将所有非选定区域绘制为完全透明:
注意
设置&#39; FaceAlpha&#39;时,我没有任何问题。标量值(即它不是我的图形卡的问题):
surf(X, Y, Z, Data, 'AlphaData', WAlpha, 'FaceAlpha', 0.5);
源代码
以下是我为重现此问题而创建的非常简短的虚拟代码的链接:link
如果您有任何其他想法强调所选区域而不是使用透明度,请告诉我。
答案 0 :(得分:3)
这是快速测试:
%# 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')
结果:
答案 1 :(得分:1)
哎呀,发现它......
需要更改Alim
对象上的axes
属性,因为在设置[min(WAlpha) max(WAlpha)]
而不是保留{{>}时 设置为AlphaData
{1}}。所以命令是:
[0 1]