如何在MATLAB中为曲面的不同侧面选择不同的颜色

如何在MATLAB中为曲面的不同侧面选择不同的颜色,matlab,plot,colors,surf,Matlab,Plot,Colors,Surf,我在MATLAB中绘制可定向的开放曲面,曲面的每一侧都有很好的定义。我想让每一面都有不同的颜色,这样就很容易分辨出你是在看“正面”还是背面。我在MATLAB中看不到这一点。我尝试过背面照明,但这并没有产生什么不同。我不确定这是否是因为我的数据是开放的而不是封闭的。这也可能是其他变量的选择。下面是一段代码片段 h = surf(xc,yc,-zc); set(h,'faceColor',[0.75 0.75 0.75],'BackFaceLighting','lit')

我在MATLAB中绘制可定向的开放曲面,曲面的每一侧都有很好的定义。我想让每一面都有不同的颜色,这样就很容易分辨出你是在看“正面”还是背面。我在MATLAB中看不到这一点。我尝试过背面照明,但这并没有产生什么不同。我不确定这是否是因为我的数据是开放的而不是封闭的。这也可能是其他变量的选择。下面是一段代码片段

       h = surf(xc,yc,-zc);
       set(h,'faceColor',[0.75 0.75 0.75],'BackFaceLighting','lit');   
我尝试了不同的选择。最终,我想要的是让前面(看得见的那一个)是深灰色,后面是不同的浅灰色。有些情况下,表面会折叠或扭曲,并且部分背部可见。此外,如果其他绘图函数(surf()除外)执行此操作,请告知我


SciLab实际上默认使用蓝色和黄色(或其他颜色组合)来实现这一点。所以我不必担心指定选项

可以绘制两个曲面,一个略低于另一个

例如:

[X, Y, Z] = peaks(25);
figure;
surf(X, Y, Z, 'faceColor', [0.15 0.15 1]);
hold on
Z2 = Z - 0.01; %Set Z2 values slightly lower then Z
surf(X, Y, Z2, 'faceColor', [0.75 0.75 0.75], 'BackFaceLighting', 'lit');
hold off
结果:

谢谢,我试试看。我已经试过两次冲浪,但是没有分离。我遇到的一个问题是冲浪会折叠,有时会交叉。这项技术似乎不适用于他们的开箱即用。然而,我可以用一点diff geom计算出这些折痕和交叉的位置,然后在每一块上做不同的颜色或嵌套曲面,逐块绘制。我在寻找一个MATLAB内置的解决方案,但我认为没有。我找到了一个不完美的即兴解决方案。。。我很高兴您发现它很有用。对于复杂曲面,您可能必须沿其法线移动每个顶点,而不是仅偏移z坐标。但我认为这确实是唯一的解决方案,MATLAB不允许表面两侧的颜色不同。