第10章 MATLAB圖形對象句柄_第1頁
第10章 MATLAB圖形對象句柄_第2頁
第10章 MATLAB圖形對象句柄_第3頁
第10章 MATLAB圖形對象句柄_第4頁
第10章 MATLAB圖形對象句柄_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第10章MATLAB圖形對象句柄10.1圖形對象及其句柄10.2圖形窗口與坐標軸10.3低層繪圖操作10.4光照和材質(zhì)處理10.1圖形對象及其句柄10.1.1圖形對象在MATLAB中,每一個具體的圖形都是由若干個不同的圖形對象組成的。所有的圖形對象都按父對象和子對象的方式組成層次結(jié)構(gòu)10.1.2圖形對象句柄的使用圖形對象句柄是對象,句柄相當于對象名,可以是一個圖形的標識。x=0:pi/10:2*pi;y=sin(x);h0=plot(x,y,'r')%曲線對象的句柄通過圖形句柄可以訪問圖形對象的屬性,例如:h0.ColorMATLAB提供了若干個函數(shù)用于獲取已有圖形對象的句柄,常用的函數(shù)如下。①gcf:獲取當前圖形窗口的句柄(getcurrentfigure)。②gca:獲取當前坐標軸的句柄(getcurrentaxis)。③gco:獲取最近被選中的圖形對象的句柄(getcurrentobject)。④findobj:按照指定的屬性來獲取圖形對象的句柄。例如:>>h1=gcf10.1.3圖形對象屬性1.屬性名與屬性值例如,LineStyle是曲線對象的一個屬性名,它的值決定著線型,取值可以是'-'、':'、'-.'、'--'或'none'。2.屬性的操作可以通過set函數(shù)重新設置對象屬性,同時也可以通過get函數(shù)獲取這些屬性值。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函數(shù)的調(diào)用格式為:V=get(句柄,屬性名)其中,V是返回的屬性值。如果在調(diào)用get函數(shù)時省略屬性名,則將返回句柄所有的屬性值。用get函數(shù)來獲得上述曲線的屬性值。例如:>>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函數(shù),其調(diào)用格式為:句柄變量=figure(屬性名1,屬性值1,屬性名2,屬性值2,…)MATLAB通過對屬性的操作來改變圖形窗口的形式,也可以使用figure函數(shù)按MATLAB默認的屬性值建立圖形窗口:句柄變量=figure調(diào)用figure函數(shù)來顯示該窗口,并將之設定為當前窗口,調(diào)用格式為:figure(窗口句柄)圖形窗口屬性:MenuBar屬性

Name屬性

NumberTitle屬性Resize屬性Position屬性Units屬性Color屬性Pointer屬性對鍵盤及鼠標響應屬性:KeyPressFcn(鍵盤鍵按下響應)、WindowButtonDownFcn(鼠標鍵按下響應)WindowButtonMotionFcn(鼠標移動響應)WindowButtonUpFcn(鼠標鍵釋放響應)這些屬性所對應的屬性值可以為用MATLAB編寫的函數(shù)名或命令名,表示一旦鍵盤鍵或鼠標鍵按下之后,將自動調(diào)用給出的函數(shù)或命令。例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個不同的圖形窗口繪制出正弦、余弦、正切、余切曲線。要求先建立一個圖形窗口并繪圖,然后每關(guān)閉一個再建立下一個,直到建立第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]);'];%先創(chuàng)建一個圖形窗口并繪制曲線figure('Name','sin(x)','DeleteFcn',C2,'NumberTitle','off')plot(x,y);axis([0,2*pi,-1,1])10.2圖形窗口與坐標軸10.2.2坐標軸對象坐標軸對象是圖形窗口的子對象,每個圖形窗口中可以定義多個坐標軸對象,但只有一個坐標軸是當前坐標軸,在沒有指明坐標軸時,所有的圖形圖像都是在當前坐標軸中輸出。建立坐標軸對象使用axes函數(shù),其調(diào)用格式為:句柄變量=axes(屬性名1,屬性值1,屬性名2,屬性值2,…)按MATLAB默認的屬性值在當前圖形窗口創(chuàng)建坐標軸:axes句柄變量=axes10.2.2坐標軸對象坐標軸對象的屬性:Box屬性GridLineStyle屬性

Position屬性Units屬性

Title屬性ColorOrder屬性XLabel、YLabel、ZLabel屬性XLim、YLim、ZLim屬性XScale、YScale、ZScale屬性例10-4利用坐標軸對象實現(xiàn)圖形窗口的任意分割。clf;%清除當前圖形窗口的內(nèi)容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函數(shù),其調(diào)用格式為:句柄變量=line(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,…)

Color屬性

LineStyle屬性:定義線型,默認值為'-',即實線。LineWidth屬性:定義線寬,默認值為0.5磅。Marker屬性:定義數(shù)據(jù)點標記符號,默認值為'none'。MarkerSize屬性:定義數(shù)據(jù)點標記符號的大小,默認值為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函數(shù),其調(diào)用格式為:句柄變量=surface(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,…)EdgeColor屬性FaceColor屬性

LineStyle屬性:定義線型,默認值為'-',即實線。LineWidth屬性:定義線寬,默認值為0.5磅。Marker屬性:定義數(shù)據(jù)點標記符號,默認值為'none'。MarkerSize屬性:定義數(shù)據(jù)點標記符號的大小,默認值為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函數(shù)可以根據(jù)指定位置和屬性值添加文本說明,并保存句柄。該函數(shù)的調(diào)用格式為:句柄變量=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.區(qū)域塊對象patch(x,y,z,c)句柄變量=patch(屬性名1,屬性值1,屬性名2,屬性值2,…)①Faces屬性:定義各小面的頂點。②Vertices屬性:定義各頂點的坐標。③FaceColor屬性:該屬性的取值是代表某顏色的字符或RGB值,還可以是'flat'、'interp'或'none',默認為黑色。定義小面的顏色。④EdgeColor屬性:該屬性的取值是代表某顏色的字符或RGB值,還可以是'flat'、'interp'或'none',默認為黑色。定義小面邊緣的顏色。⑤FaceVertexCData屬性繪制一個由4個小面組成的扇面。首先通過小面頂點坐標和顏色進行創(chuàng)建,用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('輸入?yún)?shù)P的維數(shù)不正確!')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','-')%繪制垂直圓柱體的外圍線%側(cè)視圖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-.');%繪制側(cè)視圖的垂直軸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.方框?qū)ο笤贛ATLAB中,矩形、橢圓以及兩者之間的過渡圖形,如圓角矩形都稱為方框?qū)ο?。?chuàng)建方框?qū)ο蟮牡蛯雍瘮?shù)是rectangle:rectangle(屬性名1,屬性值1,屬性名2,屬性值2,…)①Position屬性②Curvature屬性:定義方框邊的曲率。該屬性指定曲率,其取值格式為[x,y],其中x為水平曲率,y為垂直曲率。③LineStyle屬性:④LineWidth屬性。⑤EdgeColor屬性⑥FaceColor屬性例10-9在同一個圖形窗口中創(chuàng)建矩形、圓角矩形、橢圓和圓各一個,并使用了不同的線型和線寬。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光照和材質(zhì)處理10.4.1光照處理MATLAB提供light函數(shù)創(chuàng)建光源對象,其調(diào)用格式為:light(屬性名1,屬性值1,屬性名2,屬性值2,…)發(fā)光對象有如下3個重要屬性。(1)Color屬性:設置光的顏色,默認為白色。(2)Style屬性:設置光源對象是否在無窮遠,可取值為'infinite'(默認值)或'local',分別表示無窮遠光和近光。(3)Position屬性MATLAB提供light函數(shù)創(chuàng)建光源對象,其調(diào)用格式為:light(屬性名1,屬性值1,屬性名2,屬性值2,…)發(fā)光對象有如下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材質(zhì)處理1.圖形對象的反射特性(1)鏡面反射和漫反射區(qū)域塊和曲面對象的SpecularStrength屬性用來控制對象表面鏡面反射的強度,屬性值取0~1之間的數(shù),默認取0.9。DiffuseStrength屬性用來控

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論