




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章MATLAB图形对象句柄10.1图形对象及其句柄10.2图形窗口与坐标轴10.3低层绘图操作10.4光照和材质处理10.1图形对象及其句柄10.1.1图形对象在MATLAB中,每一个具体的图形都是由若干个不同的图形对象组成的。所有的图形对象都按父对象和子对象的方式组成层次结构10.1.2图形对象句柄的使用图形对象句柄是对象,句柄相当于对象名,可以是一个图形的标识。x=0:pi/10:2*pi;y=sin(x);h0=plot(x,y,'r')%曲线对象的句柄通过图形句柄可以访问图形对象的属性,例如:h0.ColorMATLAB提供了若干个函数用于获取已有图形对象的句柄,常用的函数如下。①gcf:获取当前图形窗口的句柄(getcurrentfigure)。②gca:获取当前坐标轴的句柄(getcurrentaxis)。③gco:获取最近被选中的图形对象的句柄(getcurrentobject)。④findobj:按照指定的属性来获取图形对象的句柄。例如:>>h1=gcf10.1.3图形对象属性1.属性名与属性值例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-'、':'、'-.'、'--'或'none'。2.属性的操作可以通过set函数重新设置对象属性,同时也可以通过get函数获取这些属性值。set(句柄,属性名1,属性值1,属性名2,属性值2,…)x=0:pi/10:2*pi;h=plot(x,sin(x));set(h,'Color','r','LineStyle',':','Marker','p')2.属性的操作get函数的调用格式为:V=get(句柄,属性名)其中,V是返回的属性值。如果在调用get函数时省略属性名,则将返回句柄所有的属性值。用get函数来获得上述曲线的属性值。例如:>>col=get(h,'Color')>>V=get(0,'ScreenSize')3.图形对象的公共属性Children属性。Parent属性。Tag属性Type属性。UserData属性Visible属性ButtonDownFcn属性。CreateFcn属性DeleteFcn属性例10-1在同一坐标下绘制红、绿两根不同曲线,希望获得绿色曲线的句柄,并对其进行设置。x=0:pi/50:2*pi;y=sin(x);z=cos(x);plot(x,y,'r',x,z,'g') %绘制两根不同的曲线Hl=get(gca,'Children'); %获取两曲线句柄向量Hlfork=1:size(Hl)ifget(Hl(k),'Color')==[0,1,0] %[0,1,0]代表绿色Hlg=Hl(k); %获取绿色线条句柄endendpause %便于观察设置前后的效果set(Hlg,'LineStyle',':','Marker','p')%对绿色线条进行设置10.2图形窗口与坐标轴10.2.1图形窗口对象建立图形窗口对象使用figure函数,其调用格式为:句柄变量=figure(属性名1,属性值1,属性名2,属性值2,…)MATLAB通过对属性的操作来改变图形窗口的形式,也可以使用figure函数按MATLAB默认的属性值建立图形窗口:句柄变量=figure调用figure函数来显示该窗口,并将之设定为当前窗口,调用格式为:figure(窗口句柄)图形窗口属性:MenuBar属性
Name属性
NumberTitle属性Resize属性Position属性Units属性Color属性Pointer属性对键盘及鼠标响应属性:KeyPressFcn(键盘键按下响应)、WindowButtonDownFcn(鼠标键按下响应)WindowButtonMotionFcn(鼠标移动响应)WindowButtonUpFcn(鼠标键释放响应)这些属性所对应的属性值可以为用MATLAB编写的函数名或命令名,表示一旦键盘键或鼠标键按下之后,将自动调用给出的函数或命令。例10-2建立一个图形窗口。该图形窗口没有菜单条,标题名称为“图形窗口示例”,起始于屏幕左下角、宽度和高度分别为300像素点和150像素点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将显示“Hello,World!”字样。命令如下:>>hf=figure('Color',[0,1,0],'Position',[1,1,300,150],...'Name','图形窗口示例','NumberTitle','off','MenuBar','none',...'KeyPressFcn','disp(''Hello,World!'')');例10-3分别在4个不同的图形窗口绘制出正弦、余弦、正切、余切曲线。要求先建立一个图形窗口并绘图,然后每关闭一个再建立下一个,直到建立第4个窗口并绘图。x=linspace(0,2*pi,60);y=sin(x);
z=cos(x);
t=tan(x);
ct=1./(t+eps);;%命令组待用C4=['figure(''Name'',''cotangent(x)'',''NumberTitle'',',...'''off'');plot(x,ct);axis([0,2*pi,-40,40]);'];C3=['figure(''Name'',''tangent(x)'',''DeleteFcn'',C4,',...'''NumberTitle'',''off'');plot(x,t);axis([0,2*pi,-40,40]);'];C2=['figure(''Name'',''cos(x)'',''DeleteFcn'',C3,',...'''NumberTitle'',''off'');plot(x,z);axis([0,2*pi,-1,1]);'];%先创建一个图形窗口并绘制曲线figure('Name','sin(x)','DeleteFcn',C2,'NumberTitle','off')plot(x,y);axis([0,2*pi,-1,1])10.2图形窗口与坐标轴10.2.2坐标轴对象坐标轴对象是图形窗口的子对象,每个图形窗口中可以定义多个坐标轴对象,但只有一个坐标轴是当前坐标轴,在没有指明坐标轴时,所有的图形图像都是在当前坐标轴中输出。建立坐标轴对象使用axes函数,其调用格式为:句柄变量=axes(属性名1,属性值1,属性名2,属性值2,…)按MATLAB默认的属性值在当前图形窗口创建坐标轴:axes句柄变量=axes10.2.2坐标轴对象坐标轴对象的属性:Box属性GridLineStyle属性
Position属性Units属性
Title属性ColorOrder属性XLabel、YLabel、ZLabel属性XLim、YLim、ZLim属性XScale、YScale、ZScale属性例10-4利用坐标轴对象实现图形窗口的任意分割。clf;%清除当前图形窗口的内容x=linspace(0,2*pi,20);
y=sin(x);axes('Position',[0.2,0.2,0.2,0.7],'GridLineStyle','-.')plot(y,x);title(‘sin(x)-1’);axes('Position',[0.4,0.5,0.2,0.1])stairs(x,y);title('sin(x)-2');
axes('Position',[0.55,0.6,0.25,0.3])stem(x,y);title('sin(x)-3');axes('Position',[0.55,0.2,0.25,0.3])[x,y]=meshgrid(-8:0.5:8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);mesh(x,y,z);title('mesh(x,y,z)')10.3低层绘图操作10.3.1曲线对象曲线对象是坐标轴的子对象,它既可以定义在二维坐标系中,也可以定义在三维坐标系中。建立曲线对象使用line函数,其调用格式为:句柄变量=line(x,y,z,属性名1,属性值1,属性名2,属性值2,…)
Color属性
LineStyle属性:定义线型,默认值为'-',即实线。LineWidth属性:定义线宽,默认值为0.5磅。Marker属性:定义数据点标记符号,默认值为'none'。MarkerSize属性:定义数据点标记符号的大小,默认值为6磅。XData、YData、ZData属性例10-5利用曲线对象制曲线t=0:pi/100:pi/2;y1=sin(2*pi*t);y2=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3);axes('GridLineStyle',':','XLim',[0,pi/2],'YLim',[-1,1])line('XData',t,'YData',y1,'LineWidth',1)line(t,y2)gridon10.3.2曲面对象建立曲面对象使用surface函数,其调用格式为:句柄变量=surface(x,y,z,属性名1,属性值1,属性名2,属性值2,…)EdgeColor属性FaceColor属性
LineStyle属性:定义线型,默认值为'-',即实线。LineWidth属性:定义线宽,默认值为0.5磅。Marker属性:定义数据点标记符号,默认值为'none'。MarkerSize属性:定义数据点标记符号的大小,默认值为6磅。XData、YData、ZData属性例10-6利用曲面对象绘制三维曲面z=sinycosxx=0:0.1:2*pi;[x,y]=meshgrid(x);z=sin(y).*cos(x);axes('view',[-37.5,30])hs=surface(x,y,z,'FaceColor','w','EdgeColor','flat');gridonxlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis')title('mesh-surf')pauseset(hs,'FaceColor','flat')10.3.3文本对象使用text函数可以根据指定位置和属性值添加文本说明,并保存句柄。该函数的调用格式为:句柄变量=text(x,y,z,说明文字,属性名1,属性值1,属性名2,属性值2,…)Color属性String属性
Interpreter属性FontSize属性
Rotation属性例10-7利用曲线对象绘制并利用文字对象完成标注。theta=-pi:.1:pi;y1=sin(theta);y2=cos(theta);h=line(theta,y1,'LineStyle',':','Color','g');line(theta,y2,'LineStyle','--','Color','b')xlabel('-\pi\leq\theta\leq\pi')ylabel('sin\theta')title('Plotofsin\theta')text(-pi/4,sin(-pi/4),'\leftarrowsin(-\pi\div4)','FontSize',12)set(h,'Color','r','LineWidth',2)%改变曲线1的颜色和线宽10.3.4其他核心对象1.区域块对象patch(x,y,z,c)句柄变量=patch(属性名1,属性值1,属性名2,属性值2,…)①Faces属性:定义各小面的顶点。②Vertices属性:定义各顶点的坐标。③FaceColor属性:该属性的取值是代表某颜色的字符或RGB值,还可以是'flat'、'interp'或'none',默认为黑色。定义小面的颜色。④EdgeColor属性:该属性的取值是代表某颜色的字符或RGB值,还可以是'flat'、'interp'或'none',默认为黑色。定义小面边缘的颜色。⑤FaceVertexCData属性绘制一个由4个小面组成的扇面。首先通过小面顶点坐标和颜色进行创建,用x、y、z定义小面的顶点坐标,用c定义小面的颜色,程序1:x=[0,0,0,0;1,0.8,0.5,0;1,1,0.8,0.5];y=[0,0,0,0;0.5,0.8,1,1;0,0.5,0.8,1];z=[0.5,0.5,0.5,0.5;1.5,1.5,1.5,1.5;1.5,1.5,1.5,1.5];mc=jet(4);%定义色图矩阵c(1,1,1:3)=mc(1,:);c(1,2,1:3)=mc(2,:);c(1,3,1:3)=mc(3,:);c(1,4,1:3)=mc(4,:);patch(x,y,z,c);axis([0,1,0,1,0,2])grid程序2:vert=[0,0,0.5;1,0,1.5;1,0.5,1.5;0.8,0.8,1.5;0.5,1,1.5;0,1,1.5];fac=[1,3,2;1,4,3;1,5,4;1,6,5];mc=jet(4);patch('Faces',fac,'Vertices',vert,'FaceVertexCData',mc,...'FaceColor','Flat')axis([0,1,0,1,0,2])grid例10-8绘制两个相互垂直且直径相等的圆柱体的交线。functionpline(P,w,c,s)[m,n]=size(P);ifm==2%二维曲线H1=plot(P(1,:),P(2,:));set(H1,'Linewidth',w,'Color',c,'LineStyle',s)elseifm==3%三维曲线H2=plot3(P(1,:),P(2,:),P(3,:));set(H2,'LineWidth',w,'Color',c,'LineStyle',s)elseerror('输入参数P的维数不正确!')end%前视图P0=[0;0];P1=[-5;5];P2=[-13;5];P3=[-13;-5];%水平圆柱体坐标设置P4=[13;-5];P5=[13;5];P6=[5;5];patch([P0(1),P6(1),P5(1),P4(1),P3(1),P2(1),P1(1)],...[P0(2),P6(2),P5(2),P4(2),P3(2),P2(2),P1(2)],'y')%绘制水平圆柱体axis([-15,30,-27,18]),axisequal,axisoff;
holdonP7=[5;15];P8=[-5;15];%垂直圆柱体坐标设置patch([P0(1),P6(1),P7(1),P8(1),P1(1)],...[P0(2),P6(2),P7(2),P8(2),P1(2)],'g')%绘制垂直圆柱体pline([P0,P1,P2,P3,P4,P5,P6,P0],2.5,'k','-')
%绘制水平圆柱体的外围线pline([P6,P7,P8,P1],2.5,'k','-')%绘制垂直圆柱体的外围线%侧视图r=5;%两个圆柱体的半径t=0:pi/100:2*pi;x=23+r*cos(t);y=r*sin(t);%水平圆柱体坐标设置patch(x,y,'y')%绘制水平圆柱体P11=[28;0];P12=[28;15];P13=[18;15];P14=[18;0];%垂直圆柱体坐标设置t=0:pi/100:pi;x1=23+r*cos(t);y1=r*sin(t);patch([x1,P11(1),P12(1),P13(1),P14(1)],...[y1,P11(2),P12(2),P13(2),P14(2)],'g')%绘制垂直圆柱体pline([x;y],2.5,'k','-')%绘制水平圆柱体的外围线pline([P11,P12,P13,P14],2,'k','-')%绘制垂直圆柱体的外围线%轴线ha=plot([-14,29],[0,0],'k-.');%绘制水平轴ha.LineWidth=1.5;ha=plot([0,0],[-6,16],'k-.');%绘制前视图的垂直轴ha.LineWidth=1.5;ha=plot([23,23],[-6,16],'k-.');%绘制侧视图的垂直轴ha.LineWidth=1.5;%标题及标注ht=title('两个圆柱体的交线');ht.FontSize=12;ht=text(-3,-10,'水平圆柱体:y^2+z^2=r^2');ht.FontSize=12;ht=text(-3,-15,'垂直圆柱体:x^2+y^2=r^2');ht.FontSize=12;ht=text(-3,-20,'交线的投影:z^2-x^2=0');ht.FontSize=12;holdoff2.方框对象在MATLAB中,矩形、椭圆以及两者之间的过渡图形,如圆角矩形都称为方框对象。创建方框对象的低层函数是rectangle:rectangle(属性名1,属性值1,属性名2,属性值2,…)①Position属性②Curvature属性:定义方框边的曲率。该属性指定曲率,其取值格式为[x,y],其中x为水平曲率,y为垂直曲率。③LineStyle属性:④LineWidth属性。⑤EdgeColor属性⑥FaceColor属性例10-9在同一个图形窗口中创建矩形、圆角矩形、椭圆和圆各一个,并使用了不同的线型和线宽。subplot(2,2,1)rectangle('Position',[2,3,25,15],'LineWidth',3)subplot(2,2,2)rectangle('Position',[3,5,15,8],'Curvature',0.4,'LineWidth',2)subplot(2,2,3)rectangle('Position',[5,3,10,15],'Curvature',[1,1])subplot(2,2,4)rectangle('Position',[5,3,10,10],'Curvature',[1,1],...'LineStyle','--','FaceColor','r')axisequal10.4光照和材质处理10.4.1光照处理MATLAB提供light函数创建光源对象,其调用格式为:light(属性名1,属性值1,属性名2,属性值2,…)发光对象有如下3个重要属性。(1)Color属性:设置光的颜色,默认为白色。(2)Style属性:设置光源对象是否在无穷远,可取值为'infinite'(默认值)或'local',分别表示无穷远光和近光。(3)Position属性MATLAB提供light函数创建光源对象,其调用格式为:light(属性名1,属性值1,属性名2,属性值2,…)发光对象有如下3个重要属性。(1)Color属性:设置光的颜色,默认为白色。(2)Style属性:设置光源对象是否在无穷远,可取值为'infinite'(默认值)或'local',分别表示无穷远光和近光。(3)Position属性利用lighting命令可以设置光照模式,其格式为:lighting选项其中,选项有4种取值:flat、gouraud、phong、none。例10-10绘制光照处理后的球面并观察不同光照模式下的效果。[x,y,z]=sphere(20);subplot(1,4,1)surf(x,y,z);axisequalshadinginterpholdonsubplot(1,4,2)surf(x,y,z);axisequallight('Position',[0,1,1])shadinginterp;lightingflatholdonplot3(0,1,1,'p');text(0,1,1,'light')subplot(1,4,3)surf(x,y,z);axisequallight('Position',[0,1,1])shadinginterp;lightinggouraudholdonsubplot(1,4,4)surf(x,y,z);axisequallight('Position',[0,1,1])shadinginterp;lightingphong10.4.2材质处理1.图形对象的反射特性(1)镜面反射和漫反射区域块和曲面对象的SpecularStrength属性用来控制对象表面镜面反射的强度,属性值取0~1之间的数,默认取0.9。DiffuseStrength属性用来控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨境电商物流分析
- 三农扶贫资金使用管理指南
- 医疗器械销售策略及预案
- 农业产业结构调整与转型升级方案
- 环境监测与污染防治技术应用指南
- 电子商务运营策略与市场分析知识考点
- 莲花县垃圾焚烧发电项目
- 项目管理进度表-项目时间线
- 游戏行业版权保护与侵权应对预案
- 监控复习试题及答案
- 药品质量管理体系文件目录
- 安徽涵丰科技有限公司年产6000吨磷酸酯阻燃剂DOPO、4800吨磷酸酯阻燃剂DOPO衍生品、12000吨副产品盐酸、38000吨聚合氯化铝、20000吨固化剂项目环境影响报告书
- GA/T 492-2004城市警用地理信息图形符号
- 化妆品生产许可申请表样板
- 老年综合评估和老年综合征课件
- 岩石性质及其工程分级课件
- 2023年西安铁路职业技术学院单招综合素质考试笔试题库及答案解析
- (新版)网络攻防知识考试题库(含答案)
- 人员技能矩阵图
- 教育评价学全套ppt课件完整版教学教程
- JJG 1063-2010 电液伺服万能试验机-(高清现行)
评论
0/150
提交评论