• 三维封闭曲线着色,在图中插入子图,指定显示的图例。


    立体图像着色

    主要使用函数fill3()

    • 功能:给三维图像着色
    • 调用规则:fill3(X, Y, Z, C, 'PropertyName', PropertyValue)
    • 输入
      • X、Y 、Z指坐标
      • C:颜色
      • 'PropertyName':可选属性,主要使用了透明度 alpha
        • 可以使用 fig = get(gcf) 获取图形对象的属性和值;
          ax = get(gca) 获取坐标轴的属性和值

    使用fill3函数绘制一个立方体,并指定每个面的颜色,代码如下:

    figure(1);clf;hold on
    % 绘制上面
    x1 = [0,1,1,0];y1 = [0,0,1,1];z1 = [1,1,1,1];
    up_color = [0.7490,0.9490,0.9686];
    h1 = fill3(x1,y1,z1,up_color,'FaceAlpha',0.5);
    % 绘制侧面
    x2 = [0,1,1,0];y2 = [1,1,1,1];z2 = [0,0,1,1];
    side_color = [0,4,0.25,0.67];
    h2 = fill3(x2,y2,z2,side_color,'FaceAlpha',0.5);
    % 绘制正面
    x3 = [1,1,1,1];y3 = [0,0,1,1];z3 = [0,1,1,0];
    front_color = [0.172,0.475,0.27];
    h3 = fill3(x3,y3,z3,front_color,'FaceAlpha',0.5);
    
    % 添加图例
    legend({'上面','侧面','正面'},'FontSize',12,'Location','eastoutside')
    
    % 显示网格
    grid on 
    hold off
    
    # 指定观察到角度
    view([140,23.5])   
    

    观察的角度可以先手动调整,然后获取观察的角度。

    • 进入手动调整界面

    • 按下旋转按钮,然后便可任意拖动

    • 获取当前视角
    ax = get(gca);
    ax.View
    

    图中图

    主要使用函数axes()

    • 功能:创建坐标系
    • 调用规则:axes(Name,Value)
      • 在当前坐标系中在创建一个子坐标系
      • 参数中使用了'position',指放置的位置和大小。Value=[0.1,0.1,0.3,0.4]指子坐标系的原点相对于整个图像的位置是[0.1, 0.1],长和宽分别是0.3和0.4
    axes('Position',[0.28,0.62,0.28,0.25]); % 放置子图在主图中的位置
    x4 = [1,0,0];  y4 = [0,1,0];  z4 = [0,0,1];
    bevel_color = [0.82,0.15,0.47];
    h4 = fill3(x4,y4,z4,bevel_color,'FaceAlpha',0.5);
    

    显示指定图例

    如果只想显示部分图例,在绘图时可以用变量接受图像,然后在legend中指定显示的图例。如,在图中只想显示正面和小斜面的图例,则可以按照如下方式设置

    legend([h3,h4],{'正面','小斜面'},'FontSize',12)
    

    完整程序

    figure(1);clf;hold on
    % 绘制上面
    x1 = [0,1,1,0];y1 = [0,0,1,1];z1 = [1,1,1,1];
    up_color = [0.7490,0.9490,0.9686];
    h1 = fill3(x1,y1,z1,up_color,'FaceAlpha',0.5);
    % 绘制侧面
    x2 = [0,1,1,0];y2 = [1,1,1,1];z2 = [0,0,1,1];
    side_color = [0,4,0.25,0.67];
    h2 = fill3(x2,y2,z2,side_color,'FaceAlpha',0.5);
    % 绘制正面
    x3 = [1,1,1,1];y3 = [0,0,1,1];z3 = [0,1,1,0];
    front_color = [0.172,0.475,0.27];
    h3 = fill3(x3,y3,z3,front_color,'FaceAlpha',0.5);
    % 指定观察到角度
    view([140,23.5])   
    
    % 绘制子图
    axes('Position',[0.28,0.62,0.28,0.25]); % 放置子图在主图中的位置
    x4 = [1,0,0];  y4 = [0,1,0];  z4 = [0,0,1];
    bevel_color = [0.82,0.15,0.47];
    h4 = fill3(x4,y4,z4,bevel_color,'FaceAlpha',0.5);
    view([140,23.5])
    
    % 添加图例
    legend([h3,h4],{'正面','小斜面'},'FontSize',12)
    
    % 显示网格
    grid on 
    hold off
    

  • 相关阅读:
    学习日志---4.5.6
    学习日志---3
    学习日志---2
    学习日志---1
    阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章
    淘宝网的质量属性的六个常见属性场景
    虚继承 private virtual class
    C++ 类中什么时候需要一个operator<
    C++ 中关于 输出的重定向
    C++ 元编程 学习二
  • 原文地址:https://www.cnblogs.com/liuxiang2020/p/11192444.html
Copyright © 2020-2023  润新知