【问题标题】:How to choose different colors for different sides of a surface in MATLAB如何在 MATLAB 中为曲面的不同侧面选择不同的颜色
【发布时间】:2020-05-11 15:36:30
【问题描述】:

我正在 MATLAB 中绘制可定向的开放曲面,其中曲面的每一侧都已明确定义。我想让每一面都有不同的颜色,这样很容易判断你是在看“正面”还是背面。我看不到在 MATLAB 中得到这个。我尝试过背面照明,但这不会产生差异。我不确定是不是因为我的数据是一个开放的表面而不是一个封闭的表面。它也可以是其他变量的选择。这是一个代码sn-p。

       h = surf(xc,yc,-zc);
       set(h,'faceColor',[0.75 0.75 0.75],'BackFaceLighting','lit');   

我尝试了不同的选项。最终我想要的是正面(可见的)是深灰色,背面是不同的浅灰色。在某些情况下,表面折叠或扭曲并且背面的一部分是可见的。此外,如果 surf() 以外的其他绘图函数是否这样做,请告诉我。

SciLab 实际上默认使用蓝色和黄色(或其他颜色组合)来执行此操作。所以我不必担心指定选项。

【问题讨论】:

    标签: matlab plot colors surf


    【解决方案1】:

    您可以绘制两个曲面,一个比另一个略低。

    例子:

    [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
    

    结果:

    【讨论】:

    • 谢谢,我会试试的。我已经尝试了 2 次冲浪,但没有分离。
    • 我遇到的一个问题是冲浪折叠起来,有时会交叉。这种技术似乎不适用于开箱即用。但是,我可以通过一点 diff geom 找出这些折痕和交叉点出现在哪里,然后在每块上做不同的颜色或嵌套冲浪,分段绘制它们。
    • 我一直在寻找 MATLAB 内置解决方案,但我认为没有。我找到了一个不完美的临时解决方案......我很高兴你发现它有帮助。
    • 对于复杂的曲面,您可能必须沿其法线移动每个顶点,而不仅仅是偏移 z 坐标。但我认为这确实是唯一的解决方案,MATLAB 不允许表面 AFAIK 的两侧使用不同的颜色。
    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多