zoukankan      html  css  js  c++  java
  • MATLAB 图形着色

    1.matlab中的颜色查找表函数:

    (1)autumn:从红色向橘黄色、黄色平稳过渡;

    (2)bone:为含有较高的蓝色组分的gray颜色查找表;

    (3)colorcube:包含RGB颜色空间中尽可能多的规则间隔的颜色,它试图提供更多的灰色、纯红、纯绿和纯蓝;

    (4)cool:由青色和洋红阴影组成的颜色。在青色和洋红间平滑过渡;

    (5)copper:在黑色和亮铜色间平滑过渡;

    (6)flag:由红、白、蓝、黑组成。每次索引值增加时,该颜色查找表会完全改变颜色;

    (7)gray:线性灰阶颜色查找表;

    (8)hot:在黑、红、橘红、黄、白间平滑过渡;

    (9)hsv:颜色从红色开始,然后为黄、绿、青、蓝、洋红,最后是红色。特别适合显示周期性函数;

    (10)jet:在蓝、青、黄、橘红、红色间过渡;

    (11)lines:生成颜色由坐标系对象的colororder属性和灰色阴影确定;

    (12)pink:包含品红色的柔和阴影。可以对灰度照片进行棕褐色化;

    (13)prism:重复红、橘红、黄、绿、蓝、紫色;

     (14)spring:由洋红和黄色阴影组成;

    (15)summer:由绿色和黄色阴影组成;

    (16)white:白色;

    (17)winter:由蓝色和绿色阴影组成。

    2.用colormapeditor可以画出抢眼的图。

    [x,y]=meshgrid(-2:0.1:2);
    z=x.*exp(-x.^2-y.^2);
    surf(x,y,z,gradient(z));
    shading interp;
    colormapeditor;

    [学习笔记]matlab图形着色

    图1

    [学习笔记]matlab图形着色

    图2

    [学习笔记]matlab图形着色
    图3

    3.利用函数del2计算矩阵的拉普拉斯算子,实现表面曲率向颜色映射

    具有相似曲率的区域用相同的颜色进行描绘。

    p=peaks(40);
    c=del2(p);
    surf(p,c);
    colormap hsv;
    %对比
    figure
    surf(p);
    colormap hsv;

    [学习笔记]matlab图形着色
    图4

    4.真彩色表面

    创建一个随机着色表面图

    z=peaks(25);
    c(:,:,1)=rand(25);
    c(:,:,2)=rand(25);
    c(:,:,3)=rand(25);
    surf(z,c);
    figure;
    surf(z,c,'FaceColor','interp','FaceLighting','phong');
    camlight right;

    [学习笔记]matlab图形着色
    图5
    [学习笔记]matlab图形着色
    图6

    5.纹理映射

    纹理映射是通过变换颜色数据将二维图像映射到三维表面上。

    clear;
    clc;
    clf;
    load earth;
    [x,y,z]=sphere(30);
    h=surface(x,y,z);
    set(h,'CData',X,'FaceColor','texturemap');%texturemap纹理贴图
    colormap(map);
    axis equal;
    set(gca,'CameraViewAngleMode','manual');
    view(3);

    [学习笔记]matlab图形着色
    图7

    6.多边形模型的着色

    控制面片着色的属性:

    CData:用x,y,z数据指定每个小面或每个顶点的颜色;

    CDataMapping:指定是否将颜色数据进行比例化或直接用作颜色映射的索引;

    FaceVertexCData:用小面和顶点数据指定每个小面或顶点的颜色;

    EdgeColor:指定边的显示,包括隐藏、单色、顶点颜色确定的刻面颜色或顶点颜色确定的插值颜色;

    FaceColor:指定小面的显示,包括隐藏、单色、顶点颜色确定的刻面颜色或顶点颜色确定的插值颜色;

    MarkerEdgeColor:指定闭合图形的边缘色;

    MarkerFaceColor:指定闭合图形的填充色。

    %画白色正方体

    vert=[1 1 1;1 2 1;2 2 1;2 1 1;1 1 2;1 2 2;2 2 2;2 1 2];
    fac=[1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8];
    patch('Faces',fac,'Vertices',vert,'FaceColor','w');
    view(3);
    axis square;
    axis equal;
    %刻面着色

    patch('Faces',fac,'Vertices',vert,'FaceVertexCData',hsv(6),'FaceColor','flat');
    %插值着色

    patch('Faces',fac,'Vertices',vert,'FaceVertexCData',hsv(6),'FaceColor','interp');[学习笔记]matlab图形着色

     

    图7

    7.片面边着色

    v=[0 0 0;1 0 0;1 1 0;0 1 0];
    f=[1 2 3 4];
    fvc=[1 1 0;1 0 0;0 1 0;1 0 1];
    patch('Vertices',v,'Faces',f,'FaceVertexCData',fvc,'FaceColor','flat','EdgeColor','flat','Marker','o','MarkerFaceColor','flat');
    set(gcf,'color','w');
    view(-16,76);
    axis off;
    text(0,0,0.5,'1');
    text(1,0,0.5,'2');
    text(1,1,0.5,'3');
    text(0,1,0.5,'4');

    [学习笔记]matlab图形着色

    图8

    修改:f=[4 3 2 1];

     

    [学习笔记]matlab图形着色



    图9

       f的次序改变不仅仅改变边的颜色,还改变了面的颜色,面的颜色是指定的第一个顶点的颜色。

    看后请点赞
  • 相关阅读:
    python3安装crypto出错,及解决方法
    php中的引用
    算法
    HTTP协议
    jdk 1.8 InvocationHandler 中文注释
    Java实现多线程的几种方法
    shell编写显示ps相关脚本
    逆波兰表达式求值(后序表达式)
    155. 最小栈(leetcode简单题)
    字符串逆序
  • 原文地址:https://www.cnblogs.com/hyb221512/p/9336059.html
Copyright © 2011-2022 走看看