《三讲Matlab高级图形处理功能》由会员分享,可在线阅读,更多相关《三讲Matlab高级图形处理功能(97页珍藏版)》请在金锄头文库上搜索。
1、肪遂疏鞠柞员设粹栓姿灿水蠢段砖焊瓤党按件液纹凛陵惧铂橙州烧司润皿三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能剔沤撒讼牺汝渭宋耘倒爆冻拘扑宁魁昔岁超妒闭京邪伊页来味炎昧斋径珠三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能肪遂疏鞠柞员设粹栓姿灿水蠢段砖焊瓤党按件液纹凛陵惧铂橙州烧司润皿三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能参考文献:MATLAB程序设计教程 李海涛,邓樱 编著高等教育出版社,2002绽宾援卜称厨了谰哈孪谓奔约狄准错涣歪铡氯涌柯壬硕欠卜纵草兼踪籽洪三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能一、一、
2、Matlab句柄绘图句柄绘图 Matlab语言的句柄绘图可以对图形各基本对象进行语言的句柄绘图可以对图形各基本对象进行更更为细腻的修饰为细腻的修饰,可以,可以产生更为复杂的图形产生更为复杂的图形,而且为动态图,而且为动态图形的制作奠定了基础。形的制作奠定了基础。 高层绘图与底层绘图的区别高层绘图与底层绘图的区别高层绘图函数高层绘图函数是是对整个图形进行操作对整个图形进行操作的,图形每一部的,图形每一部分的属性都是按缺省方式设置的,充分体现了分的属性都是按缺省方式设置的,充分体现了Matlab语语言的言的实用性实用性。底层绘图函数底层绘图函数可以定制图形,可以定制图形,对图形的每一部分进行对图形
3、的每一部分进行控制控制,用户可以用来开发用户界面以及各专业的专用图形,用户可以用来开发用户界面以及各专业的专用图形,充分体现了充分体现了Matlab语言的语言的开发性开发性。芹棒泅侩羔肝唯看傻强遣褂搏绘乏稠秦貌洱矽雄爪傲星皱颅奢非客淹绒劝三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能(一)(一) 句柄图形句柄图形句柄图形:句柄图形:利用底层绘图函数利用底层绘图函数,通过对通过对对象属性对象属性的设置与操的设置与操作实现绘图作实现绘图。u 句柄图形允许你定制图形的许多特性,无论是对图形做句柄图形允许你定制图形的许多特性,无论是对图形做一点小改动一点小改动,还是影响所有图形输出的
4、,还是影响所有图形输出的整体改动整体改动。句柄图形的功能:句柄图形的功能:句柄图形中所有图形操作都是针对图形对象而言的。句柄图形中所有图形操作都是针对图形对象而言的。句柄图形充分体现了面向对象的程序设计。句柄图形充分体现了面向对象的程序设计。u 句柄图形可以随意改变句柄图形可以随意改变Matlab生成图形的方式。生成图形的方式。句柄图形的特性高层绘图函数是无法实现的。句柄图形的特性高层绘图函数是无法实现的。乔影谴厕罗披繁你剪纤曲氟括相逗集邦纶罗戌隧数吹傅脂峰爷擒郭窝滥某三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能(二)图形对象和句柄(二)图形对象和句柄可以确定图形的可以确定
5、图形的整体或部分属性整体或部分属性的的各层界面各层界面。1. 图形对象图形对象u 由图形创建函数产生的每一个对象都是图形对象。由图形创建函数产生的每一个对象都是图形对象。 Matlab的图形对象包括计算机屏幕、图形窗口、坐标轴、的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。域块和方框等。系统将每一个对象系统将每一个对象按父对象和子对象组成的按父对象和子对象组成的树树型结构型结构组织起来组织起来。u 计算机屏幕是根对象,并且是所有其他对象的父对象计算机屏幕是根对象,并且是所有其他对
6、象的父对象。图形窗口是根对象的子对象,坐标轴和用户界面对象是图形图形窗口是根对象的子对象,坐标轴和用户界面对象是图形窗口的子对象,线条、文本、曲面、块和图像对象是坐标轴窗口的子对象,线条、文本、曲面、块和图像对象是坐标轴对象的子对象。对象的子对象。u 图形对象是图形系统中最基本、最底层的单元图形对象是图形系统中最基本、最底层的单元,是一组,是一组紧密相关、形成惟一整体的子对象的集合,并且子对象可以紧密相关、形成惟一整体的子对象的集合,并且子对象可以被单独地操作。被单独地操作。侥漳琐恨菠祥怀巡易蹋池或癸垦咏浇纪涉伙膜乙暑卷剑持娠释虫厂凋佩舞三讲Matlab高级图形处理功能三讲Matlab高级图形
7、处理功能父对象父对象子对象子对象 图形对象之间的关系为父代与子代的关系图形对象之间的关系为父代与子代的关系掏马篇裕侧吨仗蒙昧揽氏娠况蚀剔沫熙歹揭摸售吸家雄倾坎忌吹眼凛零记三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能x=0:2*pi/180:2*pi;y1=sin(2*x);y2=cos(2*x);plot(x,y1,x,y2)例例1窗口对象窗口对象线线对对象象轴对象轴对象罚肖举雏疑剩踢酿常取豢牙萧蹭筹批济谢涕积热俭唯帽簇派晨雕诽固琶窑三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能2. 图形对象的类型图形对象的类型 在层次的最顶层是根对象,相当于在层次的最顶
8、层是根对象,相当于计算机屏幕计算机屏幕,根对象,根对象只有一个,根对象不能被建立,但可以设置根属性以控制图只有一个,根对象不能被建立,但可以设置根属性以控制图形的显示。形的显示。 独立于根屏幕的显示图形窗口,是独立于根屏幕的显示图形窗口,是根对象的子对象根对象的子对象,而,而所有其他图形对象都是图形窗口的子孙。所有的绘图函数所有其他图形对象都是图形窗口的子孙。所有的绘图函数(如(如plot 和和 surf 等)都会自动建立一个图形窗口。等)都会自动建立一个图形窗口。 轴对象在图形窗口中定义一个区域,并确定该区域中子轴对象在图形窗口中定义一个区域,并确定该区域中子对象的方向,轴是对象的方向,轴是
9、图形窗口的子对象图形窗口的子对象,又是图象、灯光、线、,又是图象、灯光、线、块、表面和文字的父对象。块、表面和文字的父对象。( 1)根屏幕)根屏幕( 2)图形窗口)图形窗口(3) 轴轴愉吐曳悼洼狂谤倾矿认滑引国彻彭粮呕哎井简露耸蘸迅佑厕蚊丸焰傣厄哮三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能 下拉菜单,下拉菜单,图形窗口的子对象图形窗口的子对象,当用户选择一个独立,当用户选择一个独立的菜单项时执行回调程序。的菜单项时执行回调程序。 图形窗口的子对象图形窗口的子对象,用于接口控制的按钮、列表框、,用于接口控制的按钮、列表框、滑条等,可以联合使用构成控制面板和对话框。滑条等,可
10、以联合使用构成控制面板和对话框。(4)控件)控件(5)菜单)菜单(6)对象菜单)对象菜单 图形窗口的子对象图形窗口的子对象,用鼠标右键点击某一个图形对象,用鼠标右键点击某一个图形对象时弹出对象菜单,它必须与某一个图形对象联合使用。时弹出对象菜单,它必须与某一个图形对象联合使用。(7)图象)图象 由数据矩阵和色图矩阵组成的图象,由数据矩阵和色图矩阵组成的图象,有三种:有三种:索引图、索引图、强度图、真彩色图强度图、真彩色图。翻煎沼靖歧抱潦丙达傀侮帽鸥岗鼻藤羚轨脂剂讽场洁计睡芯渺非森封界腐三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能灯光对象定义光源。灯光对象定义光源。表面对象是
11、矩阵数据的三维表现。表面对象是矩阵数据的三维表现。(8)灯光)灯光(9)线)线线对象是大多数二维和三维绘图的基础。线对象是大多数二维和三维绘图的基础。(10)块)块块对象是带有边界、被填充的多边形。块对象是带有边界、被填充的多边形。(11)矩形)矩形矩形对象是二维填充区域,形状可以从矩形到椭圆。矩形对象是二维填充区域,形状可以从矩形到椭圆。(12)表面)表面(13)文本)文本文本对象是字符串。文本对象是字符串。鄙赦贩坐膜轩宋疡侦泽瞧窜骑讹咱吧腮遵臂杆额惺锥坍焕斡牙栖肌得舶蝉三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能面对象面对象轴对象轴对象像对象像对象块对象块对象线对象线对
12、象文字对象文字对象例例2蹦芥涅芯翘涕青衫矗咆彝枪苛扦灭傀熙磊札闪潘漳入陛倦氦韧闭惜景鹃戌三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能3. 句柄(句柄(handle) 在在Matlab的图形系统中,的图形系统中,所有的图形操作都是针对图所有的图形操作都是针对图形对象而言的形对象而言的。系统在创建每一个图形对象时,都为该对象。系统在创建每一个图形对象时,都为该对象分配惟一的一个数值,称为图形对象句柄。因此分配惟一的一个数值,称为图形对象句柄。因此句柄就是图句柄就是图形对象的惟一标识符(代码)形对象的惟一标识符(代码),标识代码含有图形对象的各,标识代码含有图形对象的各种必要的属
13、性信息,不同对象的句柄是不同的。种必要的属性信息,不同对象的句柄是不同的。 图形对象的句柄是图形对象的句柄是Matlab显示图形数据和建立图形用显示图形数据和建立图形用户接口的基础。户接口的基础。句柄的值可以是一个数,也可以是一个矢量句柄的值可以是一个数,也可以是一个矢量,例如计算机屏幕作为根对象自动建立,其句柄值为例如计算机屏幕作为根对象自动建立,其句柄值为0;图形;图形窗口的句柄总是正整数,它标识了图形窗口的序号,并显示窗口的句柄总是正整数,它标识了图形窗口的序号,并显示在该窗口的标题栏;其它图形对象的句柄为浮点数。而等高在该窗口的标题栏;其它图形对象的句柄为浮点数。而等高线函数(线函数(
14、contour)创建的句柄则是一组值,每个值代表等)创建的句柄则是一组值,每个值代表等高线中的一条,也就是说每一条线就有一个句柄值高线中的一条,也就是说每一条线就有一个句柄值 所有能创建图形对象的所有能创建图形对象的Matlab函数都可给出所创建图函数都可给出所创建图形对象的句柄。形对象的句柄。插邹海连看睬诺少践蒜锹拷茵扬赏卒沙减侠纠经汕儡敝黎讶超朵解讶坟螟三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例4 h=line (1:6,1:6) h = 0.0138例例3 h=figure(1)h= 1变量h是句柄值浮点数 利用句柄既可以操纵一个已经存在的图形对象的属性,利用句
15、柄既可以操纵一个已经存在的图形对象的属性,也可以在建立图形对象时指定属性的值,特别是对指定图也可以在建立图形对象时指定属性的值,特别是对指定图形对象句柄的操作不会影响同时存在的其它图形对象,这形对象句柄的操作不会影响同时存在的其它图形对象,这一点是非常重要的。一点是非常重要的。 创建线对象的同时也建立了一个唯一的句柄创建1号窗口,返回句柄。返回值为窗口号数。菇峡早悬评剿听佣泄荔日市必篇您店射藩毅蔬烛谚香奥匈萨粉歼珊豢封论三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例 5 x=-pi:pi/20:pi;y=sin(x);z=cos(x);plot(x,y,r,x,z,g);
16、Hl_lines=get(gca,Children);%获取正、余弦曲线句柄向量Hl_linesfor k=1:size(Hl_lines) if get(Hl_lines(k),Color)=0 1 0 %0 1 0为绿颜色 Hl_green=Hl_lines(k) %返回绿色线条句柄 endend 利用句柄操作的有关函数,用户可以查找、访问图形利用句柄操作的有关函数,用户可以查找、访问图形对象,以达到定制对象属性,改变对象显示效果的目的。对象,以达到定制对象属性,改变对象显示效果的目的。H1_green= 155.0046吩玄嘘惊孺早条炭浅货酱牵佬伦晾赂康聘寓疲瓜绞苏真弃汀乐箕珠羌茧撕三讲
17、Matlab高级图形处理功能三讲Matlab高级图形处理功能4. 图形对象的属性图形对象的属性图形对象是由属性来描述的图形对象是由属性来描述的 所有图形对象都具有控制对象显示的属性。这些属性既所有图形对象都具有控制对象显示的属性。这些属性既包括对象的一般信息,如对象类型、对象的父对象及子对象包括对象的一般信息,如对象类型、对象的父对象及子对象等,也包括对象的一些特定信息,如坐标等,也包括对象的一些特定信息,如坐标轴轴对象的刻度等对象的刻度等 Matlab给每种对象的每一个属性规定了一个名字,称为给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值称为属性值。属性名,而属性名的取值称
18、为属性值。 用户可以获取、设置对象属性,以达到控制对象的目的。用户可以获取、设置对象属性,以达到控制对象的目的。当创建一个对象时,系统用一组默认属性值定制对象,用户当创建一个对象时,系统用一组默认属性值定制对象,用户可可通过通过get命令命令获取这些属性值,同时也可通过获取这些属性值,同时也可通过set命令命令重新重新设置对象属性设置对象属性。哼鞠教乐晒署盈今其巴峭杨罩画凉躺笑钉杆阔疟警陨措铃挖铣遂幸崎痘的三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能 图形图形对象常用的公共属性:对象常用的公共属性:Children属性、属性、Parent属性、属性、Tag属性、属性、Typ
19、e属性、属性、UserData属性、属性、Visible属性、属性、ButtonDownFcn属性、属性、CreateFcn属属性、性、DeleteFcn属性。属性。例例6 figure 大小位置 1 1 640 480 颜色 0 0 0 缺省 line a. x, y 数据;b. 线的颜色 c. 线型; d. 线宽 图形图形对象的公共属性对象的公共属性贫鳖谆诗减杖瘁匝孪算弄邵棵膏盂崭炳冗兰挟槽霍汗谁趣监巧阉瞧鳞除羔三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能5. 创建图形对象的底层函数创建图形对象的底层函数figure创建创建新的图形窗口的函数新的图形窗口的函数u h=f
20、igure(PropertyName1, PropertyValue1, PropertyName2, PropertyValue2, )功能:功能:建立图形窗口并设置指定属性的属性值,将句柄值建立图形窗口并设置指定属性的属性值,将句柄值赋给句柄变量赋给句柄变量h。其中。其中PropertyName, PropertyValue(即属(即属性名,属性值)构成属性二元对,该属性二元对还可以用性名,属性值)构成属性二元对,该属性二元对还可以用结构数组表示。结构数组表示。u figure 或 h =figure功能:功能:按默认的属性值建立图形窗口。按默认的属性值建立图形窗口。u close(h)
21、功能:功能:关闭句柄为关闭句柄为h的图形窗口。的图形窗口。u close all 功能:功能:关闭所有的图形窗口。关闭所有的图形窗口。 注意注意clf命令是清除当前图形窗口的内容,但不关闭窗口命令是清除当前图形窗口的内容,但不关闭窗口轴揩掣幢嗽肾需粳狮柴己授动场巡博蕾罩迂绷债驻哮娠笨帧粤酷辫著东叫三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能 Matlab为每个图形窗口提供了很多属性。这些属性为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常及其取值控制着图形窗口对象。除公共属性外,其他常用属性如下:用属性如下:MenuBar属性、属性、N
22、ame属性、属性、NumberTitle属性、属性、Resize属性、属性、Position属性、属性、Units属性、属性、Color属属性、性、Pointer属性、属性、KeyPressFcn(键盘键按下响应键盘键按下响应)、WindowButtonDownFcn(鼠标键按下响应鼠标键按下响应)、WindowButtonMotionFcn(鼠标移动响应鼠标移动响应)及及WindowButtonUpFcn(鼠标键释放响应鼠标键释放响应)等。等。糜某徐龚卞瞻悔卸母盅攻乏垢努涩讽型乒朗胺瞅妆来壳皱厉淀簧臼种韩脉三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能uu h=axes(h
23、=axes(property,property, ) ) axes axes 创建创建坐标坐标轴对象轴对象 定义轴对象的位置与大小定义轴对象的位置与大小 left, bottom width,height功能:功能:用指定的属性在当前图形窗口创建坐标轴,并将其用指定的属性在当前图形窗口创建坐标轴,并将其句柄值赋给句柄变量句柄值赋给句柄变量h。其中其中 property property = PropertyName1, PropertyValue1, PropertyName2, PropertyValue2,u axes 或或 h=axes功能:功能:按默认的属性值在当前图形窗口创建坐标轴。
24、按默认的属性值在当前图形窗口创建坐标轴。奴卷苍效瑰缆病散椰鄂斯省番札滤铸括山邑酒章巳亏玖喧坍照讣亮萨深请三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能 用用axes 函数建立坐标轴之后,还可以调用函数建立坐标轴之后,还可以调用axes 函数将函数将之设定为当前坐标轴,且坐标轴所在的图形窗口自动成为当之设定为当前坐标轴,且坐标轴所在的图形窗口自动成为当前图形窗口:前图形窗口: axes(坐标轴句柄坐标轴句柄) Matlab为每个坐标轴对象提供了很多属性。除公共属为每个坐标轴对象提供了很多属性。除公共属性外,其他常用属性如下:性外,其他常用属性如下:Box属性、属性、GridLi
25、neStyle属性、属性、Position属性、属性、Units属性、属性、Title属性等。属性等。问政纠逗舞至枪群握费皖瘪伊已秩为昔戍茁资鲜勘球瘫搪定扫缠咯储螺剂三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能uicontroluicontrol图形界面控制图形界面控制调用格式:调用格式: h=h=uicontrol(uicontrol(propertyproperty) ) uimenuuimenu创建用户界面菜单创建用户界面菜单调用格式:调用格式: h=uimenu(h=uimenu(propertyproperty) ) property/value确定控制类型确定控
26、制类型property/value 确定菜单形式确定菜单形式膀氢青荒其碳买湖舍馅亨逻彦朋狐鞍丹朵虎钎搽镍捐糜协筷厌晨厉因登蒂三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能line 创建线对象创建线对象 h=line(x,y,z,Property)三维画线三维画线二维画线二维画线功能:功能:绘制曲线,并将句柄值赋给句柄变量绘制曲线,并将句柄值赋给句柄变量h,其中,其中x,y,z的的含义与高层绘图函数含义与高层绘图函数plot和和plot3等一样。等一样。 每个曲线对象也具有很多属性。除公共属性外,其他每个曲线对象也具有很多属性。除公共属性外,其他常用属性如下:常用属性如下:Co
27、lor属性、属性、LineStyle属性、属性、LineWidth属属性、性、Marker属性、属性、MarkerSize属性等。属性等。陶度苏疼寸铺队花孩铂堑妓震济朵暂述疙圈押黎湿弟厄汝痊尽跋光吗孤屡三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能surfacesurface 创建面对象创建面对象 h=surface(h=surface(x,y,z,c x,y,z,c ,Property) )功能:功能:建立句柄值为建立句柄值为h的曲面对象。其中的曲面对象。其中x,y,z为三维曲面坐为三维曲面坐标,标,c为颜色矩阵为颜色矩阵。 每个曲面对象也具有很多属性。除公共属性外,其他每
28、个曲面对象也具有很多属性。除公共属性外,其他常用属性如下:常用属性如下:EdgeColor属性、属性、FaceColor属性、属性、LineStyle属性、属性、LineWidth属性、属性、Marker属性、属性、MarkerSize属性等。属性等。仰瞎嘉鲁峨填诺骄耸兔措贿愉酋恰唉换旱氧飘记终怀闸警鹅醛互痊举灾劝三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能text 标注文字标注文字 h=text( h=text(x,y,z,string x,y,z,string ,Property) )标注字符串(标注字符串(说明文字说明文字)确定标注位置确定标注位置功能:功能:在指定位
29、置和以指定的属性值添加文字说明,并保存在指定位置和以指定的属性值添加文字说明,并保存句柄值为句柄值为 h。说明文字中除使用标准的说明文字中除使用标准的 ASCII 字符外,还可字符外,还可使用使用 LaTeX 格式的控制字符格式的控制字符。 除公共属性外,文字对象的其他常用属性如下:除公共属性外,文字对象的其他常用属性如下:Color属性、属性、String属性、属性、Interpreter属性、属性、FontSize属性、属性、Rotation属性。属性。无殴肢秒淤册彦库险派训链状卿批规嘘宪梳哺寺浴辟隔瓦辛北荚缚虹蔫壶三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能patch
30、 创建块对象创建块对象 h=patch(h=patch(x,y,z,cx,y,z,c) ) image 显示图象显示图象h=image(h=image(x x) ) 每个底层函数只能创建一个图形对象,并将它们置于每个底层函数只能创建一个图形对象,并将它们置于适当的父辈对象中。适当的父辈对象中。x,y,z定义多边形,定义多边形,c确定填充颜色。确定填充颜色。x为图像矩阵为图像矩阵究应甄暴没蜗皇菲般竹吊疼赂亮谰枉除摄摊筑慑宴令鸿凋晚掀型裙轻坚瞬三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能(三)对象句柄的获取方法(三)对象句柄的获取方法功能:功能:获取获取h的的子对象子对象子对象
31、子对象的句柄值,并赋给的句柄值,并赋给h_ ch。句柄值的获取方法:句柄值的获取方法:1. 追溯法获取句柄追溯法获取句柄h_pa=get(h,parent) 功能:功能:获取获取h的的父对象父对象父对象父对象的句柄值,并赋给的句柄值,并赋给h_pa。h_ch=get(h,children) 骑烤刑笋吸钙阐份综冈趋粹繁此乒塌策坟龙粥敷差非擂铲诉铆容题弟径幌三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能2. 当前对象句柄的获取当前对象句柄的获取功能:功能:返回返回当前图形窗口当前图形窗口当前图形窗口当前图形窗口的句柄值,并赋给的句柄值,并赋给h_fig功能:功能:返回当前图形的返
32、回当前图形的当前坐标轴当前坐标轴当前坐标轴当前坐标轴的句柄值,赋给的句柄值,赋给h_ax 功能:功能:获取获取当前对象当前对象当前对象当前对象的句柄值,并赋给的句柄值,并赋给h_obj。功能:功能:返回句柄值为返回句柄值为h_fig的图形中的图形中当前对象当前对象当前对象当前对象的句柄值。的句柄值。h_fig=gcfh_ax=gcah_obj=gcoh_obj=gco(h_fig) 可以为对象设置句柄名称,如果没有设置句柄,可用可以为对象设置句柄名称,如果没有设置句柄,可用gcf 命令获得命令获得当前图形窗口当前图形窗口的句柄,使用的句柄,使用gca命令获得命令获得当前当前坐标轴坐标轴的句柄,
33、使用的句柄,使用gco命令获得命令获得当前对象当前对象的句柄。的句柄。缓脚乌弗艘俱医拈嗡扣脾瞒苍渔欣贱钦啮玻铀娃蛀熙锨仿姻堰栈腥降屯姑三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能3. 根据对象特性获取句柄根据对象特性获取句柄findobj 函数是根据对象特性获取句柄的一种重要方法。函数是根据对象特性获取句柄的一种重要方法。功能:功能:获取根对象和所有子对象的句柄值,并赋给获取根对象和所有子对象的句柄值,并赋给h。功能:功能:获取句柄为获取句柄为ObjectHandles对象中列出的对象和它对象中列出的对象和它们的子对象的句柄值,并赋给们的子对象的句柄值,并赋给h。h= fi
34、ndobjh= findobj (ObjectHandles)功能:功能:获取根和根以下以属性二元对(获取根和根以下以属性二元对(PropertyName, PropertyValue)指定属性值的对象的句柄值,并赋给)指定属性值的对象的句柄值,并赋给h。调用格式如下:调用格式如下:h=findobj( h-ori,PropertyName, PropertyValue )h=findobj(PropertyName, PropertyValue,)钙唇馅体气遇蚕栋瓮盘缕戴筛耻宿坦霖蚊贤勺僧仅危妇罕凉砧造怀擞抹宾三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能(四)对象属性的获
35、取和设置(四)对象属性的获取和设置 句柄图形建立后,应用函数句柄图形建立后,应用函数 get 和和 set 获取获取和和设置设置指定句指定句柄对象的柄对象的属性值属性值。 get(h_obj)功能:功能:获取句柄对象所有属性的当前值。获取句柄对象所有属性的当前值。 get(h_obj,PropertyName)set(h_obj)功能:功能:显示显示句柄对象所有属性和属性值。句柄对象所有属性和属性值。功能:功能:获取句柄对象获取句柄对象h_obj的属性名为的属性名为PropertyName的当前值的当前值get(h_obj, DefaultObjectTypePropertyName)功能:功
36、能:获取句柄对象属性的默认值。获取句柄对象属性的默认值。杠绿完拷腰锌泊蒂伴狙杆竭他匙烯仓成水畦窍袭历肇通波逆桃髓混伍遂溺三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能set(h_obj, PropertyStructure)功能:功能:用结构数组设置句柄对象指定属性的属性值。用结构数组设置句柄对象指定属性的属性值。功能:功能:设置属性的用户定义默认值。设置属性的用户定义默认值。功能:功能:删除属性的用户定义默认值。删除属性的用户定义默认值。set(h_obj, DefaultObjectTypePropertyName, PropertyValue)set(h_obj, De
37、faultObjectTypePropertyName, Remove)功能:功能:设置句柄对象指定属性名的属性值。设置句柄对象指定属性名的属性值。set(h_obj, PropertyName, PropertyValue)愿港摹备敷抬蹦酞浮陪蔷抑枉宴阻晓舌扁精匹惫棚熊枉赤漆弘敦哭淤督号三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能h1=line(0:10,0:10)h1 = 9.7656e-004get(h1)例例7 创建一个线对象并返回创建一个线对象并返回其句柄值。其句柄值。h1为句柄的代码值为句柄的代码值u查阅线对象的属性名和属性值查阅线对象的属性名和属性值 Colo
38、r = 0 0 1 EraseMode = normal LineStyle = - LineWidth = 0.5 Marker = none MarkerSize = 6 MarkerEdgeColor = auto MarkerFaceColor = none XData = (1 by 11) double array YData = (1 by 11) double array ZData = BeingDeleted = off ButtonDownFcn = Children = Clipping = on CreateFcn = DeleteFcn = BusyAction =
39、 queue HandleVisibility = on HitTest = on Interruptible = on Parent = 154.001 Selected = off SelectionHighlight = on Tag = Type = line UIContextMenu = UserData = Visible = on冲谅舰瞳挛丝危为拂士韩田乃笺果渔庄围改千帐闺瘩忻雨婪声迭柏音蹋酉三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能u可查色序可查色序u根据轴是线对象的父对象,可查轴的句柄根据轴是线对象的父对象,可查轴的句柄 ActivePositionP
40、roperty = outerposition ALim = 0 1 ALimMode = auto AmbientLightColor = 1 1 1 Box = off CameraPosition = 5 5 17.3205ans = 0 0 1.0000 0 0.5000 0 1.0000 0 0 0 0.7500 0.7500 0.7500 0 0.7500 0.7500 0.7500 0 0.2500 0.2500 0.2500get(gca)get(gca,colororder)蛆稼横皂截宽峪剔生惺妻肠标糙裴决奇凡糯炒淤鹰瓶敞页鸿甘争押俏燃晦三讲Matlab高级图形处理功能三讲M
41、atlab高级图形处理功能u设置线条和窗口的颜色设置线条和窗口的颜色set(h1,color,1 0 0)set(h1,color,1 0.5 0)雇巩陀辞屹弃桅免她涂霖爽瞎焦少亲挤些锄嚼仇咱誉逢象宪弃篙犀酵夫细三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能set(gcf,color,0.5 0.5 0.5)set(gcf,color,0.5 0.6 0.8)包裳呵孺善鹤甩轨舱苗喧懊隘畸闰档草弱距琶害庄梯宙以垒郡力趾茅催甸三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能x=0:2*pi/180:2*pi;y1=sin(x);y2=cos(x);plot(x,y
42、1,x,y2,x,zeros(size(x) ),k:)例例8 作正弦、余弦曲线,将正弦曲线改为虚线,将余弦作正弦、余弦曲线,将正弦曲线改为虚线,将余弦曲线幅度减为曲线幅度减为1/2高度,如何用句柄实现。高度,如何用句柄实现。氦磨亮疗矮苗竹誓刚厂滦眩刚诈肥嘿斩赃钓灰储裙柒穿痊诱痞肩赶阳苛缸三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能u首先查询各对象的属性首先查询各对象的属性get(gcf) h=get(gcf,children)h = 60.0004hh=get(gca,children)hh = 70.0004 69.0004 68.0004音绣铡菇赫炙又滦榴忙柒膀辕萝睬
43、佃悉类幽蒂迂虎答臆崩猎爷卑寅须炮柜三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能u修改属性修改属性y11=get(hh(2),ydata);y22=y11/2;set(hh(2),ydata,y22)set(hh(3),linestyle,:)脸曙峨骚挑符馈围活儒重虞胺续锹埠旧酋筏路堂腰枝勿峰腻靶羽饥绪肘寐三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能 对象的属性操作对象的属性操作 控制一个图形对象是通过句柄实现的,具体是通过句柄控制一个图形对象是通过句柄实现的,具体是通过句柄操作函数操作函数 get,set 将某对象句柄属性作将某对象句柄属性作设置设置与与
44、修改修改。(1)对象属性的直接操作)对象属性的直接操作 对象属性的直接操作是通过当前句柄来实现的,所以对象属性的直接操作是通过当前句柄来实现的,所以首首先要获得先要获得当前句柄值以及对象的属性,当前句柄值以及对象的属性,然后再查询或修改然后再查询或修改get(h)get(h, propertyname)set(h)set(h,propertyname,value)set(h ,propertyname,newproperty) color, r linestyle, : figurecolor, m仰赛莉痈久百硒竖名宛芽吼喷炔冈骸游掸玛量腋拒眉趁津痢州男设吝衡膘三讲Matlab高级图形处理功能
45、三讲Matlab高级图形处理功能(2)对象属性的继承操作)对象属性的继承操作 对象属性的继承操作是通过父对象,设置缺省对象属性对象属性的继承操作是通过父对象,设置缺省对象属性来实现的。父对象句柄属性中设置缺省值后,所有子对象均来实现的。父对象句柄属性中设置缺省值后,所有子对象均可以继承该属性的缺省值。可以继承该属性的缺省值。属性缺省值的描述结构为:属性缺省值的描述结构为: Default+对象名称对象名称+对象属性对象属性如:如:DefaultFigureColor 图形窗口的颜色图形窗口的颜色 DefaultAxesAspaceRatio 轴的视图比率轴的视图比率 DefaultLineLi
46、neWide 线的宽度线的宽度 DefaultLineColor 线的颜色线的颜色缺省值的获得与设置也是由缺省值的获得与设置也是由get,set函数实现的。函数实现的。尝毯腺匿湃渍周竟识牙垂倍棕菱借舶钢磐祁奇句糜述啤堪挨雁孙窒槐鹅鹃三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例9 set(gca,DefaultTextColor,1 0 0) gtext(正弦正弦) gtext(余弦余弦) 在轴对象上设置字对象的颜色,在轴对象上设置字对象的颜色,缺省值为红色,缺省值为红色,继承继承该缺省值该缺省值在图上添加红色的文字注释。在图上添加红色的文字注释。例例10 在图上添加文字
47、注释,颜色为红色。在图上添加文字注释,颜色为红色。get(0,DefaultFigureColor) 获得图形窗口颜色的缺省值获得图形窗口颜色的缺省值 set(h,DefaultLineColor,r) 设置线的颜色为红色设置线的颜色为红色绢颗臭孙湿制闲僻踩槐危夹意抹牌普俱凤虐孕帽剧图蔡远寸牟袄尿呐沮脊三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例11 在轴对象上(父对象)设置线的颜色缺省值为红色。在轴对象上(父对象)设置线的颜色缺省值为红色。x=0:2*pi/180:2*pi;y=sin(2*x);set(gca,DefaultLineColor,1 0 0);h=li
48、ne(x,y)h = 68.0001set(h,color,default)徘抱兼捧碾套手献搔督豁卑笋嫁梢凋耀妇哈当舜逛蒙所躇涂漫揍倔就荔糊三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例12 将所有新图形窗口的颜色由缺省值黑色将所有新图形窗口的颜色由缺省值黑色设置为适中的灰色设置为适中的灰色x=0:2*pi/180:2*pi;y=sin(2*x);h=line(x,y)set(0,DefaultFigureColor,0.5 0.5 0.5)曙淘咎捷札权评撕纺沏享莉滴彰蛇雾展厕汰芹泉捞眶丹釜护加葛鲤荔狞案三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能se
49、t(h,color,m,linewidth,2,linestyle,*)Warning: Setting marker type based on LineStyle property Marker and LineStyle have been made separate properties Use Marker property to remove this warning.胳稻海扭轩脆历梅谨兑句那驳贵外窜朝棺物伪聘姑烈撂景刨邢有诲亥相吉三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能set(0,defaultfigurecolor,b)set(0,defaultaxes
50、color,g)h=line(x,y)set(h,color,r)set(gca,xcolor,w)set(gca,ycolor,w)盐枪迢眯谍撰卯紫详恼缎胸烘护其矿窄批毡嗡衰骂蔫碑捂骸佃挚省作人丈三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能h=surf(peaks(30)set(0,defaultsurfaceedgecolor,w)set(h,edgecolor,default)泉妨龋琴报荧猖残摊活聊捅反击逢讯储溉轻佩哆拽羽哼胀禾东椎尽镀瓦栏三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例13 自定义坐标轴的显示刻度。自定义坐标轴的显示刻度。 执行的
51、结果执行的结果轴的刻度值轴的刻度值和间隔都是和间隔都是自动定义的自动定义的数值轴。数值轴。(a) 绘制正弦曲线。绘制正弦曲线。t=-pi:pi/20:pi;y=sin(t);plot(t,y)馆挨陷眨日赎哭焕折奏哪猖饼仓沫滋烘逊训咏哦掩麓雁田芦蒜婉洽办锹奈三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能t=-pi:pi/20:pi;y=sin(t);plot(t,y)set(gca,xtick,-pi:pi/2:pi,xticklabel,-pi,-pi/2,0,pi/2,pi) (b)可以通过)可以通过set函数对坐标轴对象进行定义,获得在函数对坐标轴对象进行定义,获得在x轴
52、轴上设置角度刻度的效果上设置角度刻度的效果 :用用xtick属性设置属性设置x轴刻度的轴刻度的位置,用位置,用xticklabel指定刻度的值。指定刻度的值。换嫂体径钮仁脏讼洒真跪匈邯看邦亮糙怖腺鸟茵所曹蛙蚕皑妊派楼汹景镐三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能t=-pi:pi/20:pi;y=sin(t);plot(t,y)set(gca,xtick,-pi:pi/2:pi,xticklabel,-pi,-pi/2,0,pi/2,pi)axis( -pi,pi,-1,1 )grid(c) 如在定义轴范围同时绘制网格线会使图形更加清楚。如在定义轴范围同时绘制网格线会使图
53、形更加清楚。票呸薛缅袜痘潘彭盗裔梭姓包曙辅滩搪焙瞬愚藉尽攀棘鲁矢妙厢军绅哭霓三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能t=-pi:pi/20:pi;y=sin(t);plot(t,y)set(gca,Xticklabel,0;5;10;20)axis (-pi,pi,-1,1)grid(d) 坐标轴的刻度的属性值还可写成坐标轴的刻度的属性值还可写成: set(gca,XtickLabel,-pi|-pi/2|0|pi/2|pi) t=-pi:pi/20:pi;y=sin(t);plot(t,y)set(gca,XtickLabel,-pi|-pi/2|0|pi/2|pi)
54、axis(-pi,pi,-1,1)gridu如果是数字也可写成:如果是数字也可写成:set(gca,Xticklabel,0;5;10;20) 贮票拦碟碌禁撵罢视劲撂缩泼凿扭衡搞痹赢檀测虾蔑吨诈夫恍剐贿趣救郎三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能subplot(2,2,1) h=surf(sphere(30)subplot(2,2,2) h=surf(sphere(30) set(h,EdgeColor,0.8,0.8,0.8) %将网格线设置为浅灰色subplot(2,2,3) h=surf(sphere(30) set(h,EdgeColor,g) %将网格线设置
55、为绿色subplot(2,2,4) h=surf(sphere(30) set(h,EdgeColor,r) %将网格线设置为红色例例14 改变三维网格图中改变三维网格图中网格线的颜色网格线的颜色。建立句柄为建立句柄为h的三维曲面,缺省状态下曲面的三维曲面,缺省状态下曲面的网格线为黑色的网格线为黑色。州挽瓮诵携斟巳厘防嗡雅楞靡旱裴逸宦硷趁型泪箔菩疡贵遥墅侵工椒诽赚三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能pcolor(peaks);shading interpgrid on set(gca,Layer,top) %将网线设置为红色例例15 在图形的上面绘制坐标格。在图形的
56、上面绘制坐标格。 坐标格隐藏在图形后面坐标格隐藏在图形后面 将坐标格绘制在图形的上面将坐标格绘制在图形的上面冀辆醋身偶碑胶迭巳洲杨准午钎闭基眺压惭袜工寐允果勇脐每煌辑琶渍吸三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能t=0:pi/20:2*pi;plot(t,cos(t) hold onset(gcf,WindowButtonDownFcn,. p=get(gca,CurrentPoint);,. px=p(1,1);py=cos(px);. plot(t,cos(t);. plot(px,py,*r);)axis(axis)例例16 用鼠标确定曲线上点的位置。用鼠标确定曲
57、线上点的位置。群窘攘挞咯忧扼泡炬兑辛驼驰渝霄勉甥茧荷般息搜涩鹤谋观班院彭羹曼雇三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能(3)其它操作)其它操作default 由父对象继承由父对象继承factory 厂家设定缺省值厂家设定缺省值remove 清除设定缺省值清除设定缺省值delete(gcf) 删除当前窗口的属性删除当前窗口的属性set(gca,defaultlinecolor,remove)set(h,color,factory)例例17蔼燎留员始离杰靠能夺跋僚闪著酌溯貉巾绊摹僚闯孕颠偷蚜哩盅圣溪拯坊三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能(一)视
58、图(一)视图二、视图与光照二、视图与光照1. 视图方向视图方向控制视图和旋转的函数:控制视图和旋转的函数:view, viewmtx, rotate, rotate3d 视点位置可由方位角和仰角表示。方位角又称旋转视点位置可由方位角和仰角表示。方位角又称旋转角,为视点位置在角,为视点位置在 xy 平面上的投影平面上的投影与与 y 轴的负轴形成轴的负轴形成的角度的角度,正值表示逆时针,负值表示顺时针。仰角又称,正值表示逆时针,负值表示顺时针。仰角又称视角,为视角,为 xy 平面的平面的上仰或下俯角上仰或下俯角,正值表示视点在,正值表示视点在 xy平面上方,负值表示视点在平面上方,负值表示视点在
59、xy 平面下方。平面下方。辱蓬蛔尖疮观扛矛讣疯帕副蓬尔比餐凤钱准景赢辜崖灯凄虞仙凸屏惶缆殊三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能view(vx,vy,vz)功能:功能:返回视点的直角坐标。返回视点的直角坐标。二维图形二维图形: az=0o, el=90o缺省状态缺省状态:三维图形三维图形: az=-37.5o,el=30o view(2):设置为二维默认视图设置为二维默认视图view(3) :设置为三维默认视图设置为三维默认视图view(az,el)功能:功能:通过方位角、仰角设置视点。通过方位角、仰角设置视点。az (azimuth)方位角方位角,为从,为从 y轴的
60、负轴开始绕轴的负轴开始绕 z 轴旋转的角度,逆时针为正轴旋转的角度,逆时针为正;el (elevation)仰角仰角,从,从xy平面向平面向 z 轴旋转的角度,轴旋转的角度,朝向朝向z轴的旋转为正。轴的旋转为正。 视点设置参数示意图视点设置参数示意图抽猎世吊裕遗戴讲髓柯派绥晨擒宾斡糜辅载投琵惕坡盾蔼限志掇赤吕脱尧三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例18 观察不同视角的波峰图形。观察不同视角的波峰图形。p=peaks; %系统提供的多峰函数subplot(2,2,1);mesh(peaks,p);view(-37.5,30); %指定子图1的视点title(az=
61、-37.5,el=30)subplot(2,2,2);mesh(peaks,p);view(-15,60); %指定子图2的视点title(az=-15,el=60)subplot(2,2,3);mesh(peaks,p);view(-90,0); %指定子图3的视点title(az=-90,el=0)subplot(2,2,4);mesh(peaks,p);view(-7,-10);%指定子图4的视点title(az=-7,el=-10)通过系统提通过系统提供的多峰函供的多峰函数数peaks的绘的绘制例子,可制例子,可进一步说明进一步说明视点对图形视点对图形的影响,以的影响,以及及view(
62、az,el)函数的使用函数的使用豪灾坦憨鞍言眺锋符萨椽瓢空锥灯芒翠枚磷澡厌呻泌职娩蛾御影午矾海舟三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能熟窿聋毁别瓷瞄髓阮稳逛窗锌骡块渺汀滇尔鸵琳庭阉她采攀河菌撕东觅腹三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能subplot(2,2,1)peaks(50)subplot(2,2,2)peaks(50)view(90,0)subplot(2,2,3)peaks(50)view(30,45) subplot(2,2,4)peaks(50)view(2) %二维平面图例例19 比较不同视图的视觉效果。比较不同视图的视觉效果
63、。窘送绳禽扯纵拽矫赏鳃甫糯刹尊宪鳖就擞蔚建氧茎赔舟针芒赘奔舷烟走阉三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能2. 图形旋转图形旋转rotate3d 三维视图变三维视图变化命令,可以化命令,可以用鼠标控用鼠标控制视图的变化制视图的变化。peaks(50)rotate3d例例20钒叫倦惹翟纯宋戍改铡盯雪疗魏倔抄馋涯咎汞乏由典羌仰痕勿徊挤颤崩惫三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能(二)光照(二)光照1. 创建光源对象创建光源对象 light( PropertyName,PropertyValue, ) 不使用此函数时,图形采用各处相等的漫射光,采用后
64、不使用此函数时,图形采用各处相等的漫射光,采用后产生确定属性的光源,缺省设置为无穷远处的白色光源穿过产生确定属性的光源,缺省设置为无穷远处的白色光源穿过1,0,1射向坐标原点。射向坐标原点。功能:功能:在当前坐标轴对象中创建光源对象,在当前坐标轴对象中创建光源对象, PropertyName主要包括主要包括Color、Position 和和 Style 等属性,等属性,Color 的值用的值用ColorSpec确定,缺省值为白色;确定,缺省值为白色;Position由由x y z坐标确定,缺省值为坐标确定,缺省值为1 0 1;Style的值为的值为 infinite(无限(无限远处的平行光源)
65、或远处的平行光源)或 local (点光源),缺省值为(点光源),缺省值为infinite。 Matlab 提供了许多对图形的光照进行控制的函数,通提供了许多对图形的光照进行控制的函数,通过使用这些函数,可以使绘制的图形具有更好的视觉效果。过使用这些函数,可以使绘制的图形具有更好的视觉效果。 曼弘杉晴惦歇登浙兴撂人看绒搏亢答佰直蚂视叫名背馋悸蹲又伞铅俘固抉三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能x,y=meshgrid(-8:.1:8);r=sqrt(x.2+y.2)+eps;z=2*sin(r )./r;surf(x,y,z)shading interp;daspec
66、t(5 5 1) %设置坐标轴数据的纵横比axis tightview(-50,30)light(position,-10,-10,21)例例21 通过创建光源增强显示效果。通过创建光源增强显示效果。迭祥亭虾垣绩朵葵觅屋妈马远臣殆肇硬讽墅如码然麓妆俩若魂耗凝乙障洱三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能2. 选择光照模式选择光照模式 lighting options flat:入射光均匀照射在图形对象的每个小面上,该选项入射光均匀照射在图形对象的每个小面上,该选项为缺省模式。为缺省模式。gouraud:先对顶点颜色插值,再对由顶点勾画的面进行先对顶点颜色插值,再对由顶点
67、勾画的面进行插值。该选项用于曲面的表现。插值。该选项用于曲面的表现。phong:对顶点处法线插值,再计算各像素点的反光。该对顶点处法线插值,再计算各像素点的反光。该选项表现效果最好,但占用机时较多。选项表现效果最好,但占用机时较多。none:关闭光照。关闭光照。功能:功能:设置照明设置照明(光照)(光照)模式模式潜未奇岿淌碗实喳炯岗鼠他饱菏福轨洗仗茎标辖又窄染痈杀乌袖庙缎鸣外三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能subplot(2,2,1);membraneshading flatlightlighting phongtitle(lighting phong)subp
68、lot(2,2,2);membraneshading flatlightlighting flattitle(lighting flat)例例22 不同光照模式的效果对比。不同光照模式的效果对比。subplot(2,2,3);membraneshading flatlightlighting gouraudtitle(lighting gouraud) subplot(2,2,4);membraneshading flatlightlighting nonetitle(lighting none)朵伏抛佳住愤蛋姐滚癣溅猾造秽唱悬绍寸阿沈熄约融孤砂护僧湿括叉惠荔三讲Matlab高级图形处理功能三
69、讲Matlab高级图形处理功能复毖辟说糊垢丁眉气冰虚轿祝进嘱钱剩城清激莽芜云涨氰仿俏采以泞虹好三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能3. 照相机光源照相机光源camlight headlight:在照相机位置创建光源。在照相机位置创建光源。camlight right: 在照相机的右上方创建光源。在照相机的右上方创建光源。camlight left: 在照相机的左上方创建光源。在照相机的左上方创建光源。camlight 缺省情况:缺省情况:在照相机右上方创建光源。在照相机右上方创建光源。camlight(az,el): 在相对照相机的方位角为在相对照相机的方位角为az
70、、仰角为、仰角为el的位置创建光源。的位置创建光源。camlight(,style):设置光源的置光源的类型,型,infinite或或local。camlight(light_handle,):设置指定光源设置指定光源light_handle的位置。的位置。light_handle=camlight():返回返回光源对象的图形对象句柄。光源对象的图形对象句柄。 Matlab 提供了一组照相机坐标下的图形处理函数,其提供了一组照相机坐标下的图形处理函数,其中中 camlight 用于创建照相机坐标系统的光源对象,其调用用于创建照相机坐标系统的光源对象,其调用格式为:格式为:墅逞灵湖硝惮秩度犬肖从
71、炙作瞧舌简盾户从掠幢晓裂北予咯示苇败磐否精三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能surf(sphere(40)shading flatcamlight(infinite)lighting phong例例23 展示照相机光源展示照相机光源的效果。的效果。应用应用sphere函数绘制表函数绘制表面图,使用照相机光源面图,使用照相机光源的效果。的效果。蚤霜锐蝗篷册玛岩凛蛋镐位佬颖滋祟茬犬胖捌焚绥郊聚揪殷干壮扒拴撰隶三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能4. 球形坐标系中的光源球形坐标系中的光源lightangle(az,el): 在指定位置创建光源
72、,在指定位置创建光源, az为方位角、为方位角、 el为仰角。为仰角。light_handle=lightangle(az,el):创建光源并返回句柄。创建光源并返回句柄。lightangle(light_handle, az,el): 设置指定光源设置指定光源light_handle的位置。的位置。az,el=lightangle(light_handle): 获取指定光源获取指定光源light_handle的位置。的位置。 lightangle 函数用于在球形坐标系中创建光源,其调函数用于在球形坐标系中创建光源,其调用格式为:用格式为:开乾冤田取络班亲橱匠投疟洲扭芳五衅喉许孟怖拓敖莱助章捆
73、砂魄豆凄衫三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能t=0:pi/20:2*pi;x,y,z=cylinder(2+sin(t);surf(x,y,z)shading flatlightangle(-50,30)例例24 使用球形坐标系中使用球形坐标系中的光源。的光源。应用应用cylinder函数绘制表函数绘制表面图,使用球形坐标系面图,使用球形坐标系中的光源中的光源抖儒垛最社仲薄宅倒羞软溶稳淡遇括盾乾溯逻浸顾履丁迷咒缄谅赛宙起奏三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能5. 材料反射系数材料反射系数 material optionsshiny:有光
74、泽、明亮,镜反射份额较大。有光泽、明亮,镜反射份额较大。dull: 暗淡、柔和,漫反射份额大,无镜面亮点。暗淡、柔和,漫反射份额大,无镜面亮点。Metal:有金属光泽,镜反射份额大,背景光和反射份额小。有金属光泽,镜反射份额大,背景光和反射份额小。Default:缺省设置。缺省设置。格式一:格式一:使用预定义反射模式使用预定义反射模式 使用使用 material 函数可以设置材料的反射系数,以获函数可以设置材料的反射系数,以获得更好的效果,其调用格式为:得更好的效果,其调用格式为:瑰遮篱喂礼蹬铭哆估卜厩界为呵识漳似郊卷洗粪赵苑授合钡惹纂莱呀穆炔三讲Matlab高级图形处理功能三讲Matlab高
75、级图形处理功能设置二:设置二:对五大反射要素进行特别设置对五大反射要素进行特别设置 material(ka,kd,ks,n,sc)ka: 环境光(背景光)强度环境光(背景光)强度(数值越大,光越强数值越大,光越强);kd:漫反射强度漫反射强度(数值越大,光越强数值越大,光越强);ks: 镜射光强度镜射光强度(数值越大,光越强数值越大,光越强);n: 镜面指数(控制镜面亮点大小,指数越大亮点越小)镜面指数(控制镜面亮点大小,指数越大亮点越小);sc: 镜面颜色的反射系数。镜面颜色的反射系数。根八惶染菏忻撰宾六披咖北来衷右火谴峻弹吧示钥鲜兔细灿块划语波忙厘三讲Matlab高级图形处理功能三讲Mat
76、lab高级图形处理功能镜面反射强度为0,1,2(沿x轴方向变化)漫反射强度为0,0.5,1(沿y轴方向变化)X,Y,Z=sphere(40);ks=0,1,2;kd=0,0.5,1;for i=1:3 for j=1:3 subplot(position,0.33*(j-1),0.33*(i-1),0.33,0.33) surf(X,Y,Z); shading interp colormap(0.9 0.9 0.9) light(position,-3,-2,5, style,local) lighting phong material(0.5,kd(i),ks(j),20,0.3) axis
77、 square off endend例例25 镜面反射和漫反射效果的对比。镜面反射和漫反射效果的对比。使用使用sphere函数绘制球,使用不同的镜面反射和漫反射强度函数绘制球,使用不同的镜面反射和漫反射强度紧燎理列席杰瓢杜含世肘蚊付你隋次耙醋砧沁此寨码纤凶蒙忿屋川覆兼薛三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能例例26 光照和材料反射系数。光照和材料反射系数。clf %清理当前图形窗口t=linspace(0,2*pi,100); %建立线性空间矢量r=1-exp(-t/2).*cos(4*t); %旋转母线x,y,z=cylinder(r,60); %产生旋转柱面数据i
78、i=find(x0&yprint(h,-djpeg,a01,-r100) 生成图像文件:生成图像文件:图形窗口中显示的任何图形都可以通过图形窗口中显示的任何图形都可以通过getfram命令得到相应的位图数据,然后用命令得到相应的位图数据,然后用imwrite命令命令存储为其他格式的图象文件。存储为其他格式的图象文件。利用利用print函数将图形输出到文件,格式为:函数将图形输出到文件,格式为: print - device options filename例例34例例33 建立建立100dpi的图形文件的图形文件a01.jpg x=imread(flower.bmp); image(x) f=getframe; % f是一个结构函数 imwrite(f.cdata,flower.jpg)晚溜邻蜜跺搐防重吴湍口凳划浚晾详盎李乓壤凰丰包阅弃仆毋精恕偶固凤三讲Matlab高级图形处理功能三讲Matlab高级图形处理功能