第七講 圖形修飾_第1頁(yè)
第七講 圖形修飾_第2頁(yè)
第七講 圖形修飾_第3頁(yè)
第七講 圖形修飾_第4頁(yè)
第七講 圖形修飾_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1數(shù)學(xué)實(shí)驗(yàn)第七講圖形修飾和動(dòng)畫制作(了解)Matlab介紹2三維圖形的修飾1.顏色映像

圖形的一個(gè)重要因素就是圖形的顏色,對(duì)于數(shù)值計(jì)算,顏色在圖形顯示中所起的作用不僅僅是美觀,主要是它能夠提供給用戶另外一附加維數(shù)——第四維。

Matlab采用顏色映像來處理圖形顏色,也即RGB色系。該方法在Matlab語(yǔ)言內(nèi)的實(shí)現(xiàn)是借助于矩陣來完成的,該矩陣為三列矩陣,每一列代表R(紅色)、G(綠色)和B(藍(lán)色)中的一個(gè)顏色,三者綜合構(gòu)成對(duì)應(yīng)的顏色。2023/2/5一、1.繪圖色彩的調(diào)整colormap函數(shù)

colormap(map),設(shè)置map為當(dāng)前顏色映像矩陣

colormap('default'),恢復(fù)當(dāng)前顏色映像矩陣為默認(rèn)值

cmap=colormap,獲取當(dāng)前顏色映像矩陣

colormap(ax,…),設(shè)置當(dāng)前axes對(duì)象的顏色映像矩陣MATLAB中提供了colormap函數(shù),可以根據(jù)顏色映像矩陣對(duì)圖形對(duì)象的色彩進(jìn)行調(diào)整。所謂的顏色映像矩陣就是一個(gè)的矩陣,k行表示有k種顏色,每行3個(gè)元素分別代表紅、綠、藍(lán)三元色的強(qiáng)度值,取值均在[0,1]之間。map的設(shè)置有兩種,可以人為指定一個(gè)元素值均在[0,1]之間的的矩陣,也可以用MATLAB自帶的17種顏色映像矩陣。在MATLAB命令窗口分別運(yùn)行autumn、bone、colorcube、cool、copper、flag、gray、hot、hsv、jet、lines、pink、prism、spring、summer、white和winter函數(shù),就可得到這17種顏色映像矩陣

色圖colormap

colormap(CM)設(shè)置當(dāng)前圖形窗的著色色圖為CM

MATLAB的預(yù)定義色圖矩陣CMCM含義CM含義autumn紅、黃濃淡色jet藍(lán)頭紅尾飽和值色bone藍(lán)色調(diào)濃淡色lines采用plot繪線色colorcube三濃淡多彩交錯(cuò)色pink淡粉紅色圖cool青、品紅濃淡色prism光譜交錯(cuò)色copper純銅色調(diào)線性濃淡色SPRING青、黃濃淡色flag紅-白-藍(lán)-黑交錯(cuò)色summer綠、黃濃淡色gray灰色調(diào)線性濃淡色winter藍(lán)、綠濃淡色hot黑、紅、黃、白濃淡色white全白色hsv兩端為紅的飽和值色注意:jet時(shí)默認(rèn)色圖。2色彩處理(1)顏色的向量表示

MATLAB除用字符表示顏色外,還可以用含有3個(gè)元素的向量表示顏色。向量元素在[0,1]范圍取值,3個(gè)元素分別表示紅、綠、藍(lán)3種顏色的相對(duì)亮度,稱為RGB三元組。[x,y]=meshgrid([-10:0.3:10]);R=sqrt(x.^2+y.^2);Z=sin(R)./R;surf(x,y,Z)figurecolormap(hot)surf(x,y,Z)3.三維表面圖形的著色

三維表面圖實(shí)際上就是在網(wǎng)格圖的每一個(gè)網(wǎng)格片上涂上顏色。surf函數(shù)用缺省的著色方式對(duì)網(wǎng)格片著色。除此之外,還可以用shading命令來改變著色方式。shadingfaceted命令將每個(gè)網(wǎng)格片用其高度對(duì)應(yīng)的顏色進(jìn)行著色,但網(wǎng)格線仍保留著,其顏色是黑色。這是系統(tǒng)的缺省著色方式。shadingflat命令將每個(gè)網(wǎng)格片用同一個(gè)顏色進(jìn)行著色,且網(wǎng)格線也用相應(yīng)的顏色,從而使得圖形表面顯得更加光滑。

shadinginterp命令在網(wǎng)格片內(nèi)采用顏色插值處理,得出的表面圖顯得最光滑。例1三種圖形著色方式的效果展示。程序如下:[x,y,z]=sphere(20);%球面函數(shù)colormap(copper);%copper古銅調(diào)色圖subplot(1,3,1);surf(x,y,z);axisequalsubplot(1,3,2);surf(x,y,z);shadingflat;axisequalsubplot(1,3,3);surf(x,y,z);shadinginterp;axisequal例2三種濃淡處理方式比較。clf x=-4:4;y=x;[X,Y]=meshgrid(x,y);Z=X.^2+Y.^2;surf(X,Y,Z)colormap(jet)subplot(1,3,1),surf(Z),axisoffsubplot(1,3,2),surf(Z),axisoff,shadingflatsubplot(1,3,3),surf(Z),axisoff,shadinginterpset(gcf,'Color','w')4.透明度控制alphaalpha(v)對(duì)面、塊、象三種圖形對(duì)象的透明度加以控制;0-1之間,0為完全透明,1為不透明。V的值越接近于0,透明度越高例3半透明的表面圖。clfsurf(peaks)shadinginterpalpha(0.5)colormap(summer)2023/2/5figure;[X,Y,Z]=sphere;surf(X,Y,Z);colormap(lines);shadinginterpholdon;mesh(2*X,2*Y,2*Z)hiddenoff%顯示被前面圖形遮擋的后面部分axisequalaxisofffigure;surf(X,Y,Z,'FaceColor','r');holdon;surf(2*X,2*Y,2*Z);alpha(0.4)axisequalaxisoff

例4

三維圖形的透視效果2023/2/55燈光設(shè)置light

MATLAB提供了燈光設(shè)置的函數(shù),其調(diào)用格式為:light('Color',選項(xiàng)1,'Style',選項(xiàng)2,'Position',選項(xiàng)3)option1可以采用RGB三元組或相應(yīng)的色彩字符;option2可以取’infinte’和‘local’分別表示無(wú)窮遠(yuǎn)光和近光。option3為直角坐標(biāo)三元組形式,對(duì)遠(yuǎn)光,表示光線穿過該點(diǎn)射向原點(diǎn);對(duì)近光,表示光源所在位置。例5光照處理后的球面。程序如下:[x,y,z]=sphere(20);subplot(1,2,1);surf(x,y,z);axisequal;light('Posi',[0,1,1]);shadinginterp;holdon;plot3(0,1,1,'p');text(0,1,1,'light');subplot(1,2,2);surf(x,y,z);axisequal;light('Posi',[1,0,1]);shadinginterp;holdon;plot3(1,0,1,'p');text(1,0,1,'light');2023/2/56.照明模式lighting函數(shù),調(diào)用語(yǔ)法:lightingoptions

lightingflat,產(chǎn)生均勻光照,選擇此方法,以查看面對(duì)象,是光照模式的默認(rèn)設(shè)置。

lightinggouraud,計(jì)算頂點(diǎn)法線并作線性插值修改表面顏色,選擇此方法,以查看曲面對(duì)象。

lightingphong,做線性插值并計(jì)算每個(gè)像素的反射率來修改表面顏色,選擇此方法,以查看曲面對(duì)象。此方法比lightinggouraud的效果好,但是用于渲染的時(shí)間較長(zhǎng)。

lightingnone,關(guān)掉照明。2023/2/57.圖形表面對(duì)光照反射屬性設(shè)置material函數(shù)調(diào)用語(yǔ)法:

materialoptions

materialshiny,使圖形對(duì)象有相對(duì)較高的鏡面反射,鏡面光的顏色僅取決于光源顏色。

materialdull,使圖形對(duì)象有更多的漫反射,反射光的顏色僅取決于光源顏色。

materialmetal,使圖形對(duì)象有非常高的鏡面反射和非常低的環(huán)境光及漫反射,反射光的顏色取決于光源顏色和圖形表面的顏色。2023/2/5material([kakdks])material([kakdksn])material([kakdksnsc]),用ka、kd和ks分別設(shè)置圖形對(duì)象的環(huán)境光、漫反射和鏡面反射的強(qiáng)度,用鏡面指數(shù)n控制鏡面亮點(diǎn)的大小,用sc設(shè)置鏡面顏色的反射系數(shù)。ka、kd、ks、n和sc均為標(biāo)量,sc的取值介于0和1之間。

materialdefault,恢復(fù)ka、kd、ks、n和sc的默認(rèn)值。例6燈光、照明、材質(zhì)指令所表現(xiàn)的圖形。clf;[X,Y,Z]=sphere(80);colormap(jet)subplot(1,2,1),surf(X,Y,Z),axisequaloff,shadinginterplight('position',[0-101.5],'style','infinite')lightingphongmaterialshinysubplot(1,2,2),surf(X,Y,Z,-Z),axisequaloff,shadingflatlight;lightingflatlight('position',[-1,-1,-2],'color','y')light('position',[-1,0.5,1],'style','local','color','w')set(gcf,'Color','w') 8、透視、鏤空和裁切(1)圖形的透視hiddenoff 透視被疊壓的圖形hiddenon 消隱被疊壓的圖形例7透視演[X0,Y0,Z0]=sphere(30); X=2*X0;Y=2*Y0;Z=2*Z0; surf(X0,Y0,Z0); shadinginterp holdon,mesh(X,Y,Z),colormap(hot) holdoff hiddenoff axisequal,axisoff

(2)圖形的鏤空例8演示:如何利用“非數(shù)”NaN,對(duì)圖形進(jìn)行鏤空處理。

P=peaks(30); P(18:20,9:15)=NaN; surfc(P); colormap(hot)light('position',[50,-10,5])material([0.9,0.9,0.6,15,0.4])gridoff,boxon(3)圖形的裁剪處理例9繪制三維曲面圖,并進(jìn)行插值著色處理,裁掉圖中x和y都小于0部分。程序如下:[x,y]=meshgrid(-5:0.1:5);z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);surf(x,y,z);shadinginterp;pause%程序暫停i=find(x<=0&y<=0);z1=z;z1(i)=NaN;surf(x,y,z1);shadinginterp;為了展示裁剪效果,第一個(gè)曲面繪制完成后暫停,然后顯示裁剪后的曲面。

裁減前裁減后2023/2/510.調(diào)整視點(diǎn)位置view函數(shù)

view(az,el),設(shè)置三維繪圖的視角,az是方位角,el表示相對(duì)于xoy平面的仰角。zyx-y視點(diǎn)az方位角el仰角2023/2/5

view([x,y,z]),設(shè)置視點(diǎn)的三維直角坐標(biāo)[x,y,z].view(2),設(shè)置默認(rèn)的二維視角,az=0,el=90.view(3),設(shè)置默認(rèn)的三維視角,az=-37.5,el=30.view(ax,…),設(shè)置句柄值為ax的坐標(biāo)系的視角。

[az,el]=view,返回當(dāng)前方向角和仰角。view([x,y,z])笛卡爾坐標(biāo)系下的視角,2023/2/5二、質(zhì)點(diǎn)運(yùn)動(dòng)軌跡動(dòng)畫1.comet函數(shù)

調(diào)用格式:

comet(y)

顯示質(zhì)點(diǎn)繞著向量y的二維動(dòng)畫軌跡

comet(x,y)

顯示質(zhì)點(diǎn)繞著向量y與x的二維動(dòng)畫軌跡

comet(x,y,p)

用輸入?yún)?shù)p定義軌跡尾巴線的長(zhǎng)度

comet(axes_handle,...)

在句柄值為axes_handle的坐標(biāo)系中顯示動(dòng)畫2023/2/5>>t=linspace(0,10*pi,2000);x=t.*cos(t);y=t.*sin(t);comet(x,y);例2質(zhì)點(diǎn)繞阿基米德螺線(極坐標(biāo)方程為)運(yùn)動(dòng)的二維彗星運(yùn)行軌跡動(dòng)畫。2023/2/5

調(diào)用格式:

comet3(z)

顯示質(zhì)點(diǎn)繞著向量z的三維動(dòng)畫軌跡

comet3(x,y,z)

顯示質(zhì)點(diǎn)繞著向量x、y與z的三維動(dòng)畫軌跡

comet(x,y,z,p)

用輸入?yún)?shù)p定義軌跡尾巴線的長(zhǎng)度

comet(axes_handle,...)

在句柄值為axes_handle的坐標(biāo)系中顯示動(dòng)畫2.comet3函數(shù)2023/2/5t=linspace(0,10*pi,1000);x=20*sin(t);y=20*cos(t);z=t;comet3(x,y,z)例3質(zhì)點(diǎn)繞螺旋線運(yùn)動(dòng)的三維彗星運(yùn)行軌跡動(dòng)畫。2023/2/5三、霓虹閃爍動(dòng)畫如今繁華大都市的夜色中,霓虹閃爍,煞是好看,調(diào)用MATLAB中的spinmap函數(shù)可以做出這種效果的動(dòng)畫,它是通過旋轉(zhuǎn)顏色映像的方式來呈現(xiàn)這種霓虹閃爍的動(dòng)畫效果。2023/2/51.spinmap函數(shù)

調(diào)用格式:

spinmap,旋轉(zhuǎn)顏色映像約5秒鐘;

spinmap(t),旋轉(zhuǎn)顏色映像約t秒鐘,具體時(shí)間取決于硬件;

spinmap(t,inc),旋轉(zhuǎn)顏色映像約t秒鐘,并設(shè)置增量參數(shù)inc,該參數(shù)用來調(diào)整閃爍頻率;

spinmap(‘inf’),不限時(shí)旋轉(zhuǎn)顏色映像,若需終止,請(qǐng)按Ctrl+C鍵。2023/2/5sphere;axisequal;axisoff;spinmap(20,1);

例4霓虹閃爍的球體。2023/2/5

四、電影動(dòng)畫所謂的電影動(dòng)畫是指先把一幀幀圖片保存起來,然后再像放電影一樣把它們按次序播放出來。MATLAB中提供了getframe函數(shù)和movie函數(shù),用來制作電影動(dòng)畫。其中g(shù)etframe函數(shù)用來抓取圖形對(duì)象作為電影的幀,movie函數(shù)用來播放電影動(dòng)畫。2023/2/51.getframe函數(shù)

調(diào)用格式:

getframe

返回一個(gè)電影幀,它是當(dāng)前坐標(biāo)系或圖形窗口的快照

F=getframe

抓取當(dāng)前坐標(biāo)系作為一幀

F=getframe(h)

抓取句柄值為h的圖形對(duì)象作為一個(gè)電影幀

F=getframe(h,rect)

抓取句柄值為h的圖形對(duì)象的指定區(qū)域作為一個(gè)電影幀,rect是形如[左邊距,下邊距,寬度,高度]的向量,用來設(shè)定抓取區(qū)域2023/2/52.movie函數(shù)

調(diào)用格式:

movie(M)

在當(dāng)前坐標(biāo)系中只播放一次由矩陣M所保存的電影

movie(M,n)

播放n次,若n為負(fù)數(shù),則倒著循環(huán)播放,若n為向量,第一個(gè)元素為播放次數(shù),后續(xù)元素為幀序號(hào)

movie(M,n,fps)

每秒播放fps幀,播放n次,默認(rèn)每秒12幀2023/2/5movie(h,...)

在句柄值為h的圖形窗口或坐標(biāo)系中播放電影

movie(h,M,n,fps,loc)

在句柄值為h的圖形窗口或坐標(biāo)系的指定位置播放電影。M,n,fps的說明同上。loc是4個(gè)元素的向量[xy00],x和y用來設(shè)定幀的左下角在圖形窗口或坐標(biāo)系的位置,單位為像素2023/2/5x=linspace(-2,2,100);[X,Y,Z]=meshgrid(x,x,x);V=(X.^2+9/4*Y.^2+Z.^2-1).^3-X.^2.*Z.^3-9/80*Y.^2.*Z.^3;p=patch(isosurface(X,Y,Z,V,0));set(p,'FaceColor','red','EdgeColor','none');view(3);axisequal;axisoff;light('Posi',[0-23]);lightingphongset(gca,'nextplot','replacechildren');XX=get(p,'XData');YY=get(p,'YData');ZZ=get(p,'ZData');forj=1:20bili=sin(pi*j/20);set(p,'XData',bili*XX,'YData',bili*YY,'ZData',bili*ZZ)F(j)=getframe;

endmovie(F,10)

例5一顆跳動(dòng)的紅心。2023/2/5五、錄制AVI格式視頻動(dòng)畫MATLAB中提供了avifile函數(shù),用來把getframe函數(shù)抓取的電影幀錄制為AVI格式視頻動(dòng)畫。利用MATLAB錄制AVI格式視頻動(dòng)畫的步驟依次如下:調(diào)用avifile函數(shù)先創(chuàng)建一個(gè)空白的avifile文件。繪制視頻的每一個(gè)幀所對(duì)應(yīng)的圖形。調(diào)用getframe函數(shù)抓取當(dāng)前圖形窗口或坐標(biāo)系中的圖片。調(diào)用addframe函數(shù)把抓取的圖片添加到avifile文件中。調(diào)用close函數(shù)關(guān)閉avifile文件。2023/2/5六、GIF動(dòng)畫

在瀏覽網(wǎng)頁(yè)的時(shí)候,我們會(huì)看到好多很炫的動(dòng)畫,它們大多都是G

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論