在用MATLAB绘制三维图形时,不仅可以画出带光照模式的曲面,还能在绘图时指定光线的来源。

1.带光照模式的三维曲面

surfl命令用来画一个带光照模式的三维曲面图,该命令显示一个带阴影的曲面,结合了周围的、散射的和镜面反射的光照模式。想获得较平滑的颜色过渡,则需要使用有线性强度变化的色图(如gray、copper、bone、pink等)。

surfl命令的使用格式如下:

调用格式                                           说明

surfl(Z)                                       以向量Z的元素生成一个三维的带阴影的曲面。其中阴影模式中的默认光源方位为从当前视角开始,逆时针转45°

surfl(X,Y,Z) 以矩阵X、Y、Z生成的一个三维的带阴影的曲面。其中阴影模式中默认光源方位为从当前视角开始,逆时针转45°

surfl(...,'light') 用一个MATLAB光照对象(light object)生成一个带颜色、带光照的曲面,这与用默认光照模式产生的效果不同

surfl(...,'cdata') 改变曲面颜色数据(color data),使曲面成为可反光的曲面

surfl(...,s) 指定光源与曲面之间的方位s,其中s为一个二维向量[azimuth,elevation],或者三维向量[sx,sy,sz]。默认光源方位

为从当前视角开始,逆时针转45

surfl(X,Y,Z,s,k) 指定反射常系数k,其中k为一个定义环境光(ambient light)系数(0≤ka≤1)、漫反射(diffuse reflection)系数(0≤kd≤1)、

镜面反射(specular reflection)系数(0≤ks≤1)与镜面反射亮度(以像素为单位)的四维向量[ka,kd,ks,shine],默认值为

k = [0.55 0.6 0.4 10]

h = surfl(...) 返回一个曲面图形句柄向量h

对于这个命令的使用格式需要说明的一点是,参数X、Y、Z确定的点定义了参数曲面的“里面”和“外面”,若用户想让曲面的“里面”有光照模式,只要

使用surfl(X',Y',Z')命令即可。

例:绘出山峰函数在有光照情况下的三维图形。

>> close all
>> [X,Y] = meshgrid(-5:0.25:5);
>> Z = peaks(X,Y);
>> subplot(1,2,1)
>> surfl(X,Y,Z)
>> title('外面有光照')
>> subplot(1,2,2)
>> surfl(X',Y',Z')
>> title('里面有光照')

2.光源位置及照明模式

在绘制带光照的三维图像时,可以利用light命令与lightangle命令来确定光源位置,其中light命令使用格式非常简单,即为:

light('color', s1, 'style', s2, 'position', s3)

其中color、style与position的位置可以互换,s1,s2,s3为相应的可选值。例如light('position',[1 0 0])表示光源从无穷远处沿x轴向原点照射过来。

lightangle命令的使用格式如下:

调用格式 说明

lightangle(az,el) 在由方位角和仰角确定的位置放置光源

light_handle= lightangle(az,el) 创建一个光源位置并在light_handle中返回light的句柄

lightangle(light_handle,az,el) 设置由light_handle确定的光源位置

[az,el] = lightangle(light_handle) 返回由light_handle确定的光源位置的方位角和仰角

在确定了光源位置后,用户可能还会用到一些照明模式,这一点可以利用lighting命令来实现,它主要有4种使用格式,也即有4种照明模式。

lighting flat                             produces uniform lighting across each of the faces of the object. Select this method to view faceted objects.

lighting gouraud                   calculates the vertex normals and interpolates linearly across the faces. Select this method to view curved surfaces.

lighting phong                       interpolates the vertex normals across each face and calculates the reflectance at each pixel. Select this choice to view

curved surfaces. Phong lighting generally produces better results than Gouraud lighting, but it takes longer to render.

lighting none                         turns off lighting.

例:研读下面的程序并观察其输出图形,揣摩下面各个命令的作用。

>> close all
>> [x,y,z] = sphere(40);
>> colormap(jet)
>> subplot(1,2,1);
>> surf(x,y,z),shading interp
>> light('position',[2,-2,2],'style','local')
>> lighting phong
>> title('phong')
>> subplot(1,2,2)
>> surf(x,y,z,-z),shading flat
>> lighting flat
>> light('position',[-1,0.5,1],'style','local','color','w')
>> title('flat')
>> 

MATLAB中的光照处理相关推荐

  1. tm matlab,[转载]关于matlab中textread

    今天打算跑下程序,突然发现,真的很烂,不会读入数据,简单的Iris.txt一上午都没读进去,在此对matlab中的textread函数做下总结,textscan函数待续. 笔者在此基础上进行运行,修改 ...

  2. matlab中normfit,MATLAB中如何得到一组统计数据的分布特征

    MATLAB中如何得到一组统计数据的分布特征 我想通过MATLAB知道一组统计数据的分布特征,如属于哪种分布,均值方差等,请问如何实现?谢谢! function f=p_judge(A,alpha) ...

  3. Matlab中bwmorph函数的使用

    Matlab中bwmorph函数的使用 Matlab中提供了一个基于形态学的处理函数,即以膨胀.腐蚀等操作为基础,其语法格式如下: bw2=bwmorph(bw1,operation,n); 其中bw ...

  4. Matlab中的lsqcurvefit函数的使用

    Matlab中的lsqcurvefit函数的使用 lsqcurvefit函数 调用示例 lsqcurvefit函数 非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数 ...

  5. matlab中调用java代码_Matlab中调用第三方Java代码

    在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...

  6. OpenCV中与matlab中相对应的函数

    1.matlab中的imread相当于OpenCV中的cvLoadImage(imageName,  CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR): ...

  7. matlab中用于小数取整的函数的用法

    matlab中小数取整的函数大约有四个:floor.ceil.round.fix 若 A = [-2.0, -1.9, -1.55, -1.45, -1.1, 1.0, 1.1, 1.45, 1.55 ...

  8. matlab中help所有函数功能的英文翻译

    doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...

  9. matlab单元数组与结构体的区别,MATLAB中的结构体和单元数组

    MATLAB中的结构体和单元数组 一.结构: x.real=10 x.imag=5 增加字段 x.scale=1 使用struct函数 s=struct('field1',values1,'field ...

最新文章

  1. 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解
  2. JavaScript(19)jQuery HTML 获取和设置内容和属性
  3. 塔式服务器、机架式服务器、刀片服务器区别小结
  4. Binlog同步工具Canal部署使用
  5. ExpandableListView 箭头靠右
  6. zh-cn en-uk、zh-tw表示语言(文化)代码与国家地区对照表(最全的各国地区对照表)...
  7. Docker命令行探秘
  8. 关于从asc格式到pcd格式的转换
  9. 工具介绍(3)- TS 视频文件分析工具神器
  10. google gflags 库完全使用
  11. 堆排序算法知识点总结
  12. IOS微信音乐播放问题
  13. Log binomial 回归详解
  14. jzxx2600野猫过生日
  15. 识别不同域名访问不同主页
  16. UI自动化的po模型
  17. 【御剑问情】外网手工外网端+游戏后台
  18. Centos6.5更新e1000网卡驱动
  19. [原创] 鼠绘美女全攻略
  20. 图像处理算法之图像暗角特效

热门文章

  1. Qt常用数据类型转换
  2. angular 实现modal windows效果(即模态窗口,半透明的遮罩层),以及bootstrap(css,components,js)的初步学习...
  3. ubuntu 下 github 使用方法 以及异常修改
  4. [转]动软代码生成器之模板功能介绍
  5. 项目经理:赢得项目不是终点而是起点
  6. stm32c语言arctan函数,超高速的反正切算法,纯整数运算
  7. matlab的小波分析,Matlab下小波分析wavelet常用命令
  8. 运动会计算机系,秋季运动会计算机系总结计划 (12页)-原创力文档
  9. chrome 打印布局_在打印预览模式下使用Chrome的Element Inspector?
  10. c语言入门敲打,C语言基础三(敲打键盘、寻找资料,循环语句)