MATLAB高级图形处理教程_第1页
MATLAB高级图形处理教程_第2页
MATLAB高级图形处理教程_第3页
MATLAB高级图形处理教程_第4页
MATLAB高级图形处理教程_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章高级图形处理功能目的:1、更深入地理解高层绘图指令,从而可绘制出更精细、更生动、更个性的图形;2、能利用低层图形指令和图形对象属性开发专用绘图函数。第五章高级图形处理功能目的:1一、句柄图形体系句柄图形(HandleGraphics)是一种面向对象的绘图系统。该系统提供创建计算机图形所必需的各种软件。它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面。各种MATLAB高层(High-level)图形指令(如plot,mesh)都是以句柄图形软件为基础写成的。也正是这个原因,句柄图形也被称为低层(Low-level)图形。一、句柄图形体系句柄图形(HandleGraphics)是21、图形对象把用于数据可视和界面制作的基本绘图要素称为句柄图形对象(Handlegraphicsobject)。每个图形对象可以被独立地操作。在MATLAB中生成的每个具体图形都由若干不同对象构成。每个具体图形不必包含全部对象,但每个图形必须具备根对象(根屏幕)和图形窗。1、图形对象把用于数据可视和界面制作的基本绘图要素称为句柄图32、对象句柄每个具体对象都有一个“与生俱来、终生不变”的独特“身份(Identifier)”,即句柄(Handle)。句柄是存取图形对象唯一规范识别符。不同对象的句柄不可能重复和混淆。每个计算机,根对象只有一个,即屏幕。它的句柄总是数字0。而图形窗(FigureWindows)的句柄总是正整数,它用来标识图形窗的序号。除以上两种对象外,其余对象的句柄则是双精度浮点数。注意:对根屏幕、图形窗对象来说,数字可直接作为调用对象的句柄。但不要企图通过直接输入浮点数,作为其他对象的句柄;这些对象的句柄只能由相关指令运作而得。2、对象句柄每个具体对象都有一个“与生俱来、终生不变”的独特43、句柄图形树结构在句柄图形体系中,各图形对象并不平等,它们之间的关系可用树结构层次表示。3、句柄图形树结构在句柄图形体系中,各图形对象并不平等,它们5图形对象的基本要素以根屏幕为先导图形对象之间的关系为父代与子代的关系窗口1窗口n窗口2界面控制界面菜单轴线面字块像根屏幕图形对象的基本要素以根屏幕为先导图形对象之间的关系为父代与子6说明:

根:图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。

图形窗口:

根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。

界面控制:图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。说明:根:图形对象的根,对应于计算机屏幕,根只有一个,其7界面菜单:

图形窗口的子代,创建用户界面菜单对象

轴:图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈线:轴的子代,创建线对象面:轴的子代,创建面对象字:轴的子代,创建字对象块:轴的子代,创建块对象像:轴的子代,创建图像对象界面菜单:图形窗口的子代,创建用户界面菜单对象84、对象属性所有对象都有一组定义和刻画其外貌和性状的属性(Properties)。属性由两部分组成:属性名和属性值,即二元对(Property-Name,Property-Value)在创建或修改属性的指令中,属性名和属性值总是成对出现。4、对象属性所有对象都有一组定义和刻画其外貌和性状的属性(P9属性名是英文词组字符串。该英文词组每个单词的第一个字母大写,而单词间没有空格,例如’LineStyle’,’ColorMap’等。在指令中援引属性名时,为输入方便,MATLAB采取了两个措施:不分字母大小写,都同样识别;只要不引起歧义,属性名不必写全。比如’lines’就代表’LineStyle’.不同的属性值将使对象具有不同的表现。属性名是英文词组字符串。该英文词组每个单词的第一个字母大写,105、缺省属性在创建图形对象时,MATLAB并不需要对每个属性加以定义。若用户不对属性加以定义,MATLAB总会自动给对象的每个属性赋予“厂家定义(Factory-defined)”的属性值。若希望创建具有个性的图形,就需要通过指令对某些属性进行定义。属性值的这种定义方式称为“宗量”赋值方式。5、缺省属性在创建图形对象时,MATLAB并不需要对每个属性116、句柄图形的功能句柄图形可以随意改变matlab生成图形的方式。句柄图形允许你定制图形的许多特性,无论是对图形做一点小改动,还是影响所有图形输出的整体改动。句柄图形的特性高层绘图函数是无法实现的6、句柄图形的功能句柄图形可以随意改变matlab生成图形的12二、图形对象的操作除根屏幕外,所有图形对象都由与之同名的指令创建。创建对象的低层指令(1)指令名功能调用格式举例figure创建图形窗h=figure(n)n为正整数。打开或创建第n号图形窗axes创建轴h=axes(‘position’,[left,bottom,width,height])定义坐标盒的位置和尺寸line创建线h=line(x,y,z)绘制向量x,y,z确定的直线。如果不指定z,则在x-y平面上画线surface创建面h=surface(x,y,z,c)x,y,z定义三维曲面,c是色彩矩阵。二、图形对象的操作除根屏幕外,所有图形对象都由与之同名的指令13创建对象的低层指令(2)指令名功能调用格式举例rectangle创建方h=rectangle(’position’,[x,y,w,h],’curvature’[xc,yc])x,y左下顶点坐标,w,h长方形的高和宽;xc,yc曲率patch创建块h=patch(’faces’,fac,’vertices’,vert)vert为顶点矩阵,fac为定义多边形的顶点序号矩阵image创建象h=image(x)x为图像数据矩阵text创建字h=text(x,y,’string’)x,y指定字符串string的标注位置light创建光h=light(’position’,[100])

设置入射光的方向。它影响面、块对象的渲染uicontrol创建用户界面控件h=uicontrol(’property’,value)property/value指定界面的控件类型uimenu创建用户界面菜单h=uimenu(’property’,value)property/value指定图形窗口上方的菜单行式创建对象的低层指令(2)指令名功能调用格式举例rectang14对象句柄的获取方法要设置图形对象属性值,首先要知道该对象的句柄。1、基本方法从图形创建指令获得句柄追溯法获取图柄当前对象句柄的获取根据对象特性获取句柄根据对象“诨名”获取句柄2、句柄获取示例对象句柄的获取方法要设置图形对象属性值,首先要知道该对象的句151、从图形创建指令获得句柄所有高层或低层指令(在此用GraphicCommand表示)都能通过以下格式产生句柄:

H_GC=GraphicCommand(…)

绘图同时给出句柄的调用指令H_GC。1、从图形创建指令获得句柄所有高层或低层指令(在此用Grap162、追溯法获取图柄若一个对象的句柄已知,那么可用如下格式追溯获得其“父”或“子”的句柄:

H_pa=get(H_known,’Parent’)

获取H_known句柄对象之“父”的句柄。

H_ch=get(H_known,’Children’)

获取H_known句柄对象之“子”的句柄。2、追溯法获取图柄若一个对象的句柄已知,那么可用如下格式追溯173、当前对象句柄的获取MATLAB有如下三个专用获取图柄的指令:前两个是直接指令式;后一个必须与鼠标配合使用。gcf 返回当前图形窗口的句柄gca 返回当前轴的句柄gco 返回“被鼠标最近点击”的图形对象的句柄3、当前对象句柄的获取MATLAB有如下三个专用获取图柄的指184、根据对象特性获取句柄利用对象特性搜索那对象句柄可以得到较高的搜索速度。具体指令如下:H=findobj(H_ori,PN,PV)

在H_ori指定对象上,寻找与属性对(PN,PV)匹配的对象句柄4、根据对象特性获取句柄利用对象特性搜索那对象句柄可以得到较195、根据对象“诨名”获取句柄可以通过’Tag’属性,给对象一个“诨名”。此后,就可以通过“诨名”获取该对象的句柄。设置“诨名”的两个方法:创建时赋名,如subplot(3,2,4),plot(x,y,’Tag’,’A4’);用set赋名,如subplot(3,2,4),h=plot(x,y),set(h,’Tag’,’A4’)据诨名获取对象句柄:如果屏幕上有多个图形窗,且有的窗又有多个子图,那么获取带“诨名”对象句柄的简便指令是:hax=fidobj(0,’Tag’,’A4’)。5、根据对象“诨名”获取句柄可以通过’Tag’属性,给对象一20【例】高层绘图clfreset;H_mesh=mesh(peaks(20)) H_grand_parent=get(get(H_mesh,'Parent'),'Parent')disp('图柄轴柄'),disp([gcfgca])

【例】高层绘图21【例】低层指令绘图clfreset,t=(0:100)/100*2*pi;H_line=line('Xdata',t,'Ydata',sin(t))text(pi,0.8,'\fontsize{14}sin(t)')H_c=get(get(H_line,'parent'),'children') T=get(H_c,'Type')

【例】低层指令绘图clfreset,t=(0:100)/122【例】findobj指令的使用clfreset,t=(0:pi/100:2*pi)';tt=t*[11];yy=sin(tt)*diag([0.51]);plot(tt,yy),Hb=findobj(gca,'Color','b')

【例】findobj指令的使用clfreset,t=(0:23三、对象属性的获取和设置创建对象时设置属性H_GC=GraphicCommand(……,PN,PV)

利用“属性对”设置的绘图指令H_GC=GraphicCommand(……,PS)

利用“构架”进行属性设置的绘图指令get和set对象属性的缺省设置和查询属性查询和设置示例三、对象属性的获取和设置创建对象时设置属性241、get和setget(H) 获取H句柄对象所有属性的当前值get(H,PN) 获取H句柄对象由PN所指定属性的当前值set(H) 显示H句柄对象的所有可设置属性名和全 部供选属性值set(H,PN) 显示H句柄对象PN指定属性名的全部供选 属性值set(H,PN,PV,…)设置H句柄对象的PN属性名取PV 属性值set(H,PS) 利用构架数组设置H的属性值1、get和setget(H) 获取H句柄对象所有属性252、对象属性的缺省设置和查询get(H,’DefaultObjectTypeObjectProperty’) 获取缺省值set(H,’DefaultObjectTypeObjectProperty’,propertyValue)

设置“用户定义”缺省值set(H,’DefaultObjectTypeObjectProperty’,’remove’) 删除“用户定义”缺省值2、对象属性的缺省设置和查询get(H,’DefaultOb26【例】设置对象属性clfreset,x=0:pi/12:2*pi;PN1={'Color','LineWidth','Marker'}; PV1={[100],5,'d'}; plot(sin(x),cos(x),PN1,PV1) axissquarePS.Color=[0.70.70];PS.LineWidth=2; line(sin(7*x),cos(7*x),PS);

【例】设置对象属性27【例】影响line或plot画线时线型和色彩的“父”对象设置。(1)指令中直接指定线型或/和颜色:t=(0:pi/50:2*pi)';k=0.4:0.1:1;Y=cos(t)*k;line(t,Y,'Color',[100],'LineStyle','-.') (2)轴对象属性'LineStyle'和'ColorOrder'clfresetset(gca,'ColorOrder',[000;0.70.70.7],'LineStyle','-|:') line(t,Y)

(3)对轴的缺省属性设置所产生的影响clfresetset(gcf,'DefaultAxesLineStyleOrder','-|:'); set(gcf,'DefaultAxesColorOrder',[100;001]);line(t,Y)

【例】影响line或plot画线时线型和色彩的“父”对象设28四、为底层指令准备图、轴四、为底层指令准备图、轴29五、三维图形的精细控制

视点控制色彩控制照明和材质处理五、三维图形的精细控制视点控制301、视点控制改变观察点可以获得较好三维视觉效果view([az,el])

通过方位角、俯视角设置视点view([vx,vy,vz])

通过直角坐标设置视点说明:指令中,az是方位角(Azimuth),el是俯视角(Elevation)。它们的单位是“度”。vx,vy,vz是视点的直角坐标。若绘制三维图形时,不使用view指令,那么MATLAB将使用缺省的视点设置:az=-37.5°,el=30°。当az=0°,el=90°时,图形将以习惯的平面直角坐标表现。MATLAB图形窗可交互式调节视点。为获得最佳视觉效果,用户先通过鼠标操作调节视点,然后再用指令view把相应的试点加以固定。1、视点控制改变观察点可以获得较好三维视觉效果312、色彩控制用色风格colordef色图colormap浓淡处理shading透明度控制

alpha2、色彩控制用色风格colordef32用色风格colordefcolordefoptions 对根屏幕上的所有子对象设置缺省值colordef(fig,options) 对图形窗fig上的所有子对象设置缺省值h=colordef(‘new’,options) 对新图形窗上的所有子对象设 置缺省值whitebg 使当前图形窗上“轴”的背景色在黑白间切换whitebg(fig) 使指定图形窗上“轴”的背景色在黑白间切换whitebg(C) 使当前图形窗上“轴”的背景色变为指定的颜色说明:MATLAB默认的“轴背景色”为white。Options的取值及缺省设置见下表:options轴背景色图背景色轴标色色图画线用色次序white白淡灰黑jet蓝、深绿、红、青、洋红、黄、黑black黑黑白jet黄、洋红、青、红、淡绿、蓝、淡灰用色风格colordefcolordefoptions 对33色图colormap两种基本着色技术:变址色彩法(Indexedcoloring):先把每个数据点变换为色图中的某索引号,使数据点在具体色图中获得该索引号所代表的一种颜色;然后再依据这些数据点颜色,由“浓淡处理(shading)”模式推出曲面上其他点的用色。真采法(Truecoloring):每个数据点直接用RGB三元组指定颜色。至于曲面其他点的色彩,与变址法一样,按指定的“浓淡处理”模式算得。RGB三元组:一种色彩用[RGB]基色三元行数组表示。数组元素R、G、B在[0,1]区间取值,分别表示红、绿、蓝基色相对亮度。通过对R,G,B大小的设置,可调制出不同颜色。给出一些常用颜色对应的三元数组的具体取值。色图矩阵和色图(色彩映射表)色图colormap两种基本着色技术:34饱和色调和色

[000]—

黑色

[001]—

兰色

[010]—

绿色

[011]—

浅兰

[100]—

红色

[101]—

粉红

[110]—

黄色

[111]—

白色饱和色调和色[0.50.505]—

灰色[0.500]———暗红色[10.620.4]—

铜色[0.4910.8]—

浅绿[0.4910.83]—宝石兰饱和色调和色饱和色调和色35matlab的色图函数

hsv——

饱和值色图

gray——

线性灰度色图

hot——

暖色色图

cool——

冷色色图

bone——

兰色调灰色图

copper——

铜色色图

pink——

粉红色图

prism——

光谱色图

jet——饱和值色图IIflag——

红、白、蓝交替色图matlab的色图函数hsv——饱和值色图36浓淡处理shadingshadingoptions 图形对象着色的浓淡处理说明:mesh,surf,pcolor,fill和fill3所创建图形非数据点处的着色由shading指令决定。指令的选项options可取以下三中方式:flat

网线图的某整条线段,或曲面图的某整个贴片都着一种颜色。颜色取自该线段两端,或该贴片四顶点数据中下标最小那点的颜色。interp网线图线段,或曲面图贴片上各点的颜色由该线段两端,或该贴片四顶点初的颜色经线性插值而得。这种方法的用色较细腻,但最费时。faceted

在flat用色基础上,再在贴片的四周勾画黑色网线。这种方法对立体的表现力最强,因此MATLAB把它作为缺省设置。shading 是设置当前轴上面对象的EdgeColor和FaceColor属性的高层指令。浓淡处理shadingshadingoptions 图形对37【例】三种浓淡处理方式比较clf;Z=peaks(15);colormap(jet)subplot(1,3,1),surf(Z)subplot(1,3,2),surf(Z),shadingflatsubplot(1,3,3),surf(Z),shadinginterp

【例】三种浓淡处理方式比较clf;Z=peaks(15);c38透明度控制

alphaalpha(v) 对面、块、象三种图形对象的透明度加以控制说明:v可以取0到1之间的数值。0表示完全不透明,1表示完全透明。本指令对mesh,surf,slice等高层指令都适用。例:半透明的表面图surf(peaks);shadinginterpalpha(0.5);colormap(summer)

透明度控制alphaalpha(v) 对面、块、象三种图393、照明和材质处理灯光light照明模式lighting控制光效果的材质指令material3、照明和材质处理灯光light40灯光lightlight(‘color’,option1,’style’,option2,’position’,option3) 灯光设置说明:在该指令使用前,图形采用的是等强度各处相等的漫射光。一旦该指令被执行,虽然光源本身并不出现,但图形上“轴”、“面”等子对象所有与光有关的属性(如背景光、边缘光)都被激活。假如该指令不包含任何输入宗量,则采用缺省设置:白光、无穷远、穿过[1,0,1]射向坐标原点。任何一个输入宗量对都可缺省,此时采用缺省设置。option1

可采用RGB三元组或相应的色彩字符,如[100]或‘r’都代表红光。option2

有两个取值:‘infinite’和‘local’。前者表示无穷远光,后者为近光。option3

总为直角坐标的三元组形式。对远光,它表示光线穿过该点射向原点;对近光,它表示光源所在位置。灯光lightlight(‘color’,option1,’41照明模式lightinglightingoptions 设置照明模式说明:该指令只有在light指令执行后才起作用。options有以下四种取值:flat 射入光均匀洒落在图象对象的每个面上,主要与facted配用。它是缺省模式。gouraund 先对顶点颜色插补,再对顶点勾画的面色进行插补。用于曲面表现。phong 对顶点处法线插值,再计算个像素的反光。表现效果最好,但费时较多。none 使所有光源关闭。照明模式lightinglightingoptions 42控制光效果的材质指令materialmaterialoptions 使用预定义反射模式说明:为用户使用方便,MATLAB提供了四种预定义表面反射模式,即的options取值:shiny 使对象比较明亮。镜反射份额较大,反射光颜 色仅取决于光源颜色。dull 使对象比较暗淡。漫反射份额较大,没有镜面 亮点,反射光颜色仅取决于光源颜色。metal 使对象带金属光泽。镜反射份额很大,背景光 和漫射光份额很小。反射光源和图形表面两者 的颜色。该模式为缺省模式。default 返回缺省设置模式例:灯光、照明、材质指令所表现的图形

控制光效果的材质指令materialmaterialopt43clf;[X,Y,Z]=sphere(40);colormap(jet) subplot(1,2,1);surf(X,Y,Z);shadinginterplight('position',[0-101.5],'style','infinite')lightingphong materialshinysubplot(1,2,2);surf(X,Y,Z,-Z);shadingflatlight;lightingflatlight('position',[-1,-1,-2],'color','y')light('position',[-1,0.5,1],'style','local','color','w')clf;44五、图形窗口的功能及设置MATLAB图形窗不仅仅是一个被动地显示窗口,而且是一个对窗中图形可以进行编辑操作的交互界面。编辑操作可分为两类:实现“类似高层图形指令”的操作;实现“对图形对象属性的编辑”操作。五、图形窗口的功能及设置MATLAB图形窗不仅仅是一个被动地45五、图形窗口的功能及设置MATLAB图形窗不仅仅是一个被动地显示窗口,而且是一个对窗中图形可以进行编辑操作的交互界面。编辑操作可分为两类:实现“类似高层图形指令”的操作;实现“对图形对象属性的编辑”操作。五、图形窗口的功能及设置MATLAB图形窗不仅仅是一个被动地46第五章高级图形处理功能目的:1、更深入地理解高层绘图指令,从而可绘制出更精细、更生动、更个性的图形;2、能利用低层图形指令和图形对象属性开发专用绘图函数。第五章高级图形处理功能目的:47一、句柄图形体系句柄图形(HandleGraphics)是一种面向对象的绘图系统。该系统提供创建计算机图形所必需的各种软件。它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面。各种MATLAB高层(High-level)图形指令(如plot,mesh)都是以句柄图形软件为基础写成的。也正是这个原因,句柄图形也被称为低层(Low-level)图形。一、句柄图形体系句柄图形(HandleGraphics)是481、图形对象把用于数据可视和界面制作的基本绘图要素称为句柄图形对象(Handlegraphicsobject)。每个图形对象可以被独立地操作。在MATLAB中生成的每个具体图形都由若干不同对象构成。每个具体图形不必包含全部对象,但每个图形必须具备根对象(根屏幕)和图形窗。1、图形对象把用于数据可视和界面制作的基本绘图要素称为句柄图492、对象句柄每个具体对象都有一个“与生俱来、终生不变”的独特“身份(Identifier)”,即句柄(Handle)。句柄是存取图形对象唯一规范识别符。不同对象的句柄不可能重复和混淆。每个计算机,根对象只有一个,即屏幕。它的句柄总是数字0。而图形窗(FigureWindows)的句柄总是正整数,它用来标识图形窗的序号。除以上两种对象外,其余对象的句柄则是双精度浮点数。注意:对根屏幕、图形窗对象来说,数字可直接作为调用对象的句柄。但不要企图通过直接输入浮点数,作为其他对象的句柄;这些对象的句柄只能由相关指令运作而得。2、对象句柄每个具体对象都有一个“与生俱来、终生不变”的独特503、句柄图形树结构在句柄图形体系中,各图形对象并不平等,它们之间的关系可用树结构层次表示。3、句柄图形树结构在句柄图形体系中,各图形对象并不平等,它们51图形对象的基本要素以根屏幕为先导图形对象之间的关系为父代与子代的关系窗口1窗口n窗口2界面控制界面菜单轴线面字块像根屏幕图形对象的基本要素以根屏幕为先导图形对象之间的关系为父代与子52说明:

根:图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。

图形窗口:

根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。

界面控制:图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。说明:根:图形对象的根,对应于计算机屏幕,根只有一个,其53界面菜单:

图形窗口的子代,创建用户界面菜单对象

轴:图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈线:轴的子代,创建线对象面:轴的子代,创建面对象字:轴的子代,创建字对象块:轴的子代,创建块对象像:轴的子代,创建图像对象界面菜单:图形窗口的子代,创建用户界面菜单对象544、对象属性所有对象都有一组定义和刻画其外貌和性状的属性(Properties)。属性由两部分组成:属性名和属性值,即二元对(Property-Name,Property-Value)在创建或修改属性的指令中,属性名和属性值总是成对出现。4、对象属性所有对象都有一组定义和刻画其外貌和性状的属性(P55属性名是英文词组字符串。该英文词组每个单词的第一个字母大写,而单词间没有空格,例如’LineStyle’,’ColorMap’等。在指令中援引属性名时,为输入方便,MATLAB采取了两个措施:不分字母大小写,都同样识别;只要不引起歧义,属性名不必写全。比如’lines’就代表’LineStyle’.不同的属性值将使对象具有不同的表现。属性名是英文词组字符串。该英文词组每个单词的第一个字母大写,565、缺省属性在创建图形对象时,MATLAB并不需要对每个属性加以定义。若用户不对属性加以定义,MATLAB总会自动给对象的每个属性赋予“厂家定义(Factory-defined)”的属性值。若希望创建具有个性的图形,就需要通过指令对某些属性进行定义。属性值的这种定义方式称为“宗量”赋值方式。5、缺省属性在创建图形对象时,MATLAB并不需要对每个属性576、句柄图形的功能句柄图形可以随意改变matlab生成图形的方式。句柄图形允许你定制图形的许多特性,无论是对图形做一点小改动,还是影响所有图形输出的整体改动。句柄图形的特性高层绘图函数是无法实现的6、句柄图形的功能句柄图形可以随意改变matlab生成图形的58二、图形对象的操作除根屏幕外,所有图形对象都由与之同名的指令创建。创建对象的低层指令(1)指令名功能调用格式举例figure创建图形窗h=figure(n)n为正整数。打开或创建第n号图形窗axes创建轴h=axes(‘position’,[left,bottom,width,height])定义坐标盒的位置和尺寸line创建线h=line(x,y,z)绘制向量x,y,z确定的直线。如果不指定z,则在x-y平面上画线surface创建面h=surface(x,y,z,c)x,y,z定义三维曲面,c是色彩矩阵。二、图形对象的操作除根屏幕外,所有图形对象都由与之同名的指令59创建对象的低层指令(2)指令名功能调用格式举例rectangle创建方h=rectangle(’position’,[x,y,w,h],’curvature’[xc,yc])x,y左下顶点坐标,w,h长方形的高和宽;xc,yc曲率patch创建块h=patch(’faces’,fac,’vertices’,vert)vert为顶点矩阵,fac为定义多边形的顶点序号矩阵image创建象h=image(x)x为图像数据矩阵text创建字h=text(x,y,’string’)x,y指定字符串string的标注位置light创建光h=light(’position’,[100])

设置入射光的方向。它影响面、块对象的渲染uicontrol创建用户界面控件h=uicontrol(’property’,value)property/value指定界面的控件类型uimenu创建用户界面菜单h=uimenu(’property’,value)property/value指定图形窗口上方的菜单行式创建对象的低层指令(2)指令名功能调用格式举例rectang60对象句柄的获取方法要设置图形对象属性值,首先要知道该对象的句柄。1、基本方法从图形创建指令获得句柄追溯法获取图柄当前对象句柄的获取根据对象特性获取句柄根据对象“诨名”获取句柄2、句柄获取示例对象句柄的获取方法要设置图形对象属性值,首先要知道该对象的句611、从图形创建指令获得句柄所有高层或低层指令(在此用GraphicCommand表示)都能通过以下格式产生句柄:

H_GC=GraphicCommand(…)

绘图同时给出句柄的调用指令H_GC。1、从图形创建指令获得句柄所有高层或低层指令(在此用Grap622、追溯法获取图柄若一个对象的句柄已知,那么可用如下格式追溯获得其“父”或“子”的句柄:

H_pa=get(H_known,’Parent’)

获取H_known句柄对象之“父”的句柄。

H_ch=get(H_known,’Children’)

获取H_known句柄对象之“子”的句柄。2、追溯法获取图柄若一个对象的句柄已知,那么可用如下格式追溯633、当前对象句柄的获取MATLAB有如下三个专用获取图柄的指令:前两个是直接指令式;后一个必须与鼠标配合使用。gcf 返回当前图形窗口的句柄gca 返回当前轴的句柄gco 返回“被鼠标最近点击”的图形对象的句柄3、当前对象句柄的获取MATLAB有如下三个专用获取图柄的指644、根据对象特性获取句柄利用对象特性搜索那对象句柄可以得到较高的搜索速度。具体指令如下:H=findobj(H_ori,PN,PV)

在H_ori指定对象上,寻找与属性对(PN,PV)匹配的对象句柄4、根据对象特性获取句柄利用对象特性搜索那对象句柄可以得到较655、根据对象“诨名”获取句柄可以通过’Tag’属性,给对象一个“诨名”。此后,就可以通过“诨名”获取该对象的句柄。设置“诨名”的两个方法:创建时赋名,如subplot(3,2,4),plot(x,y,’Tag’,’A4’);用set赋名,如subplot(3,2,4),h=plot(x,y),set(h,’Tag’,’A4’)据诨名获取对象句柄:如果屏幕上有多个图形窗,且有的窗又有多个子图,那么获取带“诨名”对象句柄的简便指令是:hax=fidobj(0,’Tag’,’A4’)。5、根据对象“诨名”获取句柄可以通过’Tag’属性,给对象一66【例】高层绘图clfreset;H_mesh=mesh(peaks(20)) H_grand_parent=get(get(H_mesh,'Parent'),'Parent')disp('图柄轴柄'),disp([gcfgca])

【例】高层绘图67【例】低层指令绘图clfreset,t=(0:100)/100*2*pi;H_line=line('Xdata',t,'Ydata',sin(t))text(pi,0.8,'\fontsize{14}sin(t)')H_c=get(get(H_line,'parent'),'children') T=get(H_c,'Type')

【例】低层指令绘图clfreset,t=(0:100)/168【例】findobj指令的使用clfreset,t=(0:pi/100:2*pi)';tt=t*[11];yy=sin(tt)*diag([0.51]);plot(tt,yy),Hb=findobj(gca,'Color','b')

【例】findobj指令的使用clfreset,t=(0:69三、对象属性的获取和设置创建对象时设置属性H_GC=GraphicCommand(……,PN,PV)

利用“属性对”设置的绘图指令H_GC=GraphicCommand(……,PS)

利用“构架”进行属性设置的绘图指令get和set对象属性的缺省设置和查询属性查询和设置示例三、对象属性的获取和设置创建对象时设置属性701、get和setget(H) 获取H句柄对象所有属性的当前值get(H,PN) 获取H句柄对象由PN所指定属性的当前值set(H) 显示H句柄对象的所有可设置属性名和全 部供选属性值set(H,PN) 显示H句柄对象PN指定属性名的全部供选 属性值set(H,PN,PV,…)设置H句柄对象的PN属性名取PV 属性值set(H,PS) 利用构架数组设置H的属性值1、get和setget(H) 获取H句柄对象所有属性712、对象属性的缺省设置和查询get(H,’DefaultObjectTypeObjectProperty’) 获取缺省值set(H,’DefaultObjectTypeObjectProperty’,propertyValue)

设置“用户定义”缺省值set(H,’DefaultObjectTypeObjectProperty’,’remove’) 删除“用户定义”缺省值2、对象属性的缺省设置和查询get(H,’DefaultOb72【例】设置对象属性clfreset,x=0:pi/12:2*pi;PN1={'Color','LineWidth','Marker'}; PV1={[100],5,'d'}; plot(sin(x),cos(x),PN1,PV1) axissquarePS.Color=[0.70.70];PS.LineWidth=2; line(sin(7*x),cos(7*x),PS);

【例】设置对象属性73【例】影响line或plot画线时线型和色彩的“父”对象设置。(1)指令中直接指定线型或/和颜色:t=(0:pi/50:2*pi)';k=0.4:0.1:1;Y=cos(t)*k;line(t,Y,'Color',[100],'LineStyle','-.') (2)轴对象属性'LineStyle'和'ColorOrder'clfresetset(gca,'ColorOrder',[000;0.70.70.7],'LineStyle','-|:') line(t,Y)

(3)对轴的缺省属性设置所产生的影响clfresetset(gcf,'DefaultAxesLineStyleOrder','-|:'); set(gcf,'DefaultAxesColorOrder',[100;001]);line(t,Y)

【例】影响line或plot画线时线型和色彩的“父”对象设74四、为底层指令准备图、轴四、为底层指令准备图、轴75五、三维图形的精细控制

视点控制色彩控制照明和材质处理五、三维图形的精细控制视点控制761、视点控制改变观察点可以获得较好三维视觉效果view([az,el])

通过方位角、俯视角设置视点view([vx,vy,vz])

通过直角坐标设置视点说明:指令中,az是方位角(Azimuth),el是俯视角(Elevation)。它们的单位是“度”。vx,vy,vz是视点的直角坐标。若绘制三维图形时,不使用view指令,那么MATLAB将使用缺省的视点设置:az=-37.5°,el=30°。当az=0°,el=90°时,图形将以习惯的平面直角坐标表现。MATLAB图形窗可交互式调节视点。为获得最佳视觉效果,用户先通过鼠标操作调节视点,然后再用指令view把相应的试点加以固定。1、视点控制改变观察点可以获得较好三维视觉效果772、色彩控制用色风格colordef色图colormap浓淡处理shading透明度控制

alpha2、色彩控制用色风格colordef78用色风格colordefcolordefoptions 对根屏幕上的所有子对象设置缺省值colordef(fig,options) 对图形窗fig上的所有子对象设置缺省值h=colordef(‘new’,options) 对新图形窗上的所有子对象设 置缺省值whitebg 使当前图形窗上“轴”的背景色在黑白间切换whitebg(fig) 使指定图形窗上“轴”的背景色在黑白间切换whitebg(C) 使当前图形窗上“轴”的背景色变为指定的颜色说明:MATLAB默认的“轴背景色”为white。Options的取值及缺省设置见下表:options轴背景色图背景色轴标色色图画线用色次序white白淡灰黑jet蓝、深绿、红、青、洋红、黄、黑black黑黑白jet黄、洋红、青、红、淡绿、蓝、淡灰用色风格colordefcolordefoptions 对79色图colormap两种基本着色技术:变址色彩法(Indexedcoloring):先把每个数据点变换为色图中的某索引号,使数据点在具体色图中获得该索引号所代表的一种颜色;然后再依据这些数据点颜色,由“浓淡处理(shading)”模式推出曲面上其他点的用色。真采法(Truecoloring):每个数据点直接用RGB三元组指定颜色。至于曲面其他点的色彩,与变址法一样,按指定的“浓淡处理”模式算得。RGB三元组:一种色彩用[RGB]基色三元行数组表示。数组元素R、G、B在[0,1]区间取值,分别表示红、绿、蓝基色相对亮度。通过对R,G,B大小的设置,可调制出不同颜色。给出一些常用颜色对应的三元数组的具体取值。色图矩阵和色图(色彩映射表)色图colormap两种基本着色技术:80饱和色调和色

[000]—

黑色

[001]—

兰色

[010]—

绿色

[011]—

浅兰

[100]—

红色

[101]—

粉红

[110]—

黄色

[111]—

白色饱和色调和色[0.50.505]—

灰色[0.500]———暗红色[10.620.4]—

铜色[0.4910.8]—

浅绿[0.4910.83]—宝石兰饱和色调和色饱和色调和色81matlab的色图函数

hsv——

饱和值色图

gray——

线性灰度色图

hot——

暖色色图

cool——

冷色色图

bone——

兰色调灰色图

copper——

铜色色图

pink——

粉红色图

prism——

光谱色图

jet——饱和值色图IIflag——

红、白、蓝交替色图matlab的色图函数hsv——饱和值色图82浓淡处理shadingshadingoptions 图形对象着色的浓淡处理说明:mesh,surf,pcolor,fill和fill3所创建图形非数据点处的着色由shading指令决定。指令的选项options可取以下三中方式:flat

网线图的某整条线段,或曲面图的某整个贴片都着一种颜色。颜色取自该线段两端,或该贴片四顶点数据中下标最小那点的颜色。interp网线图线段,或曲面图贴片上各点的颜色由该线段两端,或该贴片四顶点初的颜色经线性插值而得。这种方法的用色较细腻,但最费时。faceted

在flat用色基础上,再在贴片的四周勾画黑色网线。这种方法对立体的表现力最强,因此MATLAB把它作为缺省设置。shading 是设置当前轴上面对象的EdgeColor和FaceColor属性的高层指令。浓淡处理shadingshadingoptions 图形对83【例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论