計算機(jī)圖形學(xué)課程設(shè)計報告簡單圖形的繪制_第1頁
計算機(jī)圖形學(xué)課程設(shè)計報告簡單圖形的繪制_第2頁
計算機(jī)圖形學(xué)課程設(shè)計報告簡單圖形的繪制_第3頁
計算機(jī)圖形學(xué)課程設(shè)計報告簡單圖形的繪制_第4頁
計算機(jī)圖形學(xué)課程設(shè)計報告簡單圖形的繪制_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計算機(jī)圖形學(xué)課程設(shè)計報告學(xué)生姓名: 學(xué) 號: 學(xué) 院: 班 級: 題 目:簡單圖形的繪制 指導(dǎo)教師: 職稱: 2015年7月1日20 / 24文檔可自由編輯目 錄目 錄I一、選題背景1二、算法設(shè)計22.1 繪制直線、圓、橢圓、拋物線22.1.1 繪制直線22.1.2 繪制圓22.1.3 繪制橢圓22.1.4 繪制拋物線22.2 三維幾何變換2三、程序及功能說明53.1 繪制直線、圓、橢圓、拋物線53.1.1 繪制直線53.1.2 繪制圓53.1.3 繪制橢圓53.1.4 繪制拋物線63.2 圖形的平移6 3.3 圖形的旋轉(zhuǎn)6 3.4 圖形的縮放7四、結(jié)果分析74.1 繪制直線、圓、橢圓、拋物線

2、74.1.1 直線74.1.2 圓84.1.3 橢圓84.1.4 拋物線8 4.2 圖形的平移9 4.3 圖形的旋轉(zhuǎn)10 4.4 圖形的縮放11五、總 結(jié)13六、課程設(shè)計心得體會14參考文獻(xiàn)15源程序16一、選題背景二、算法設(shè)計2.1 繪制直線、圓、橢圓、拋物線2.1.1 繪制直線通過兩個點(diǎn)的坐標(biāo)來繪制直線。計算機(jī)圖形學(xué)中二維圖形在顯示輸出之前需要掃描轉(zhuǎn)換,生成直線的算法一般有DDA算法和中點(diǎn)算法。2.1.2 繪制圓通過運(yùn)用圓的參數(shù)方程來繪制圓的圖形,其中,(a,b)為圓心,r為半徑,運(yùn)用參數(shù)方程,只需要確定半徑的長度和圓心的位置,即可繪制出圓。2.1.3 繪制橢圓通過運(yùn)用橢圓的參數(shù)方程來繪制

3、橢圓的圖形,其中,是已知的變量,a,b分別為長半軸,短半軸,當(dāng)確定a和b后,通過參數(shù)方程即可得到這個橢圓的方程。2.1.4 繪制拋物線根據(jù)點(diǎn)繪制拋物線圖像是通過擬合完成,根據(jù)三個點(diǎn)的坐標(biāo),通過數(shù)據(jù)擬合,得到經(jīng)過這三個點(diǎn)的函數(shù)關(guān)系式,從而再根據(jù)這個函數(shù)關(guān)系式繪制出拋物線上其他的點(diǎn),形成一條連續(xù)的拋物線;或直接根據(jù)已知函數(shù)繪制圖像是通過已知函數(shù)畫出圖像。2.2 三維幾何變換 三維幾何變換是二維幾何變換的推廣。二維幾何變換在齊次坐標(biāo)空間中可用33的變換矩陣表示,類似的,三維幾何變換在齊次坐標(biāo)空間中可用44的變換矩陣表示。三維空間中的點(diǎn)的齊次坐標(biāo)定義為,其中,為不等與零的任意常數(shù),。亦即點(diǎn)對應(yīng)4維齊次

4、坐標(biāo)空間的一條直線: (2.2.1)通常為了簡單起見,取為的齊次坐標(biāo)。(1)平移變換平移變換將點(diǎn)在三個坐標(biāo)軸方向上分別移動距離,得到新的一點(diǎn),它們之間的關(guān)系表示為:,其中 。三維平移變換在其次坐標(biāo)下的矩陣表示為: (2.2.2)(2)放縮變換三維放縮變換在齊次坐標(biāo)下的矩陣表示: (2.2.3)此變換的參照點(diǎn)為坐標(biāo)原點(diǎn),我們可以按下面步驟建立關(guān)于空間任一參照點(diǎn)的縮放變換:(1)平移使落于原點(diǎn),變換為;(2)進(jìn)行放縮變換;(3)平移回到原先的位置,變換為。從而關(guān)于參照點(diǎn)的縮放變換為 (2.2.4)(3)旋轉(zhuǎn)變換 給定一點(diǎn),首先將點(diǎn)和坐標(biāo)表示成極坐標(biāo),即,其中。將點(diǎn)繞軸旋轉(zhuǎn)角后,得到。易知: (2.

5、2.5)上式矩陣形式為: (2.2.6)從而繞軸旋轉(zhuǎn)角的變換在齊次坐標(biāo)下的矩陣表示為: (2.2.7)類似的,繞軸和軸的旋轉(zhuǎn)的變換矩陣分別為: (2.2.8) (2.2.9)如果要繞空間任意軸旋轉(zhuǎn)角,可按如下步驟實(shí)現(xiàn):(1)以為原點(diǎn),為軸建立新的坐標(biāo)系; (2)求出從坐標(biāo)系到坐標(biāo)系的變換; (3)將圖形對象變換到坐標(biāo)系中; (4)在新坐標(biāo)系中繞軸旋轉(zhuǎn)角,變換為; (5)將圖形對象變換為原坐標(biāo)系中,變換為。這樣繞旋轉(zhuǎn)角的變換為: (2.2.10)三、程序及功能說明3.1 繪制直線、圓、橢圓、拋物線3.1.1 繪制直線plot(A,B)通過運(yùn)用matlab中的plot函數(shù)畫出兩點(diǎn)之間的直線圖像。其

6、中A,B為直線上的兩個點(diǎn)的坐標(biāo),通過兩點(diǎn)繪制直線。3.1.2 繪制圓function circle(A,R)alpha=0:pi/50:2*pi;%角度0,2*pi %R=2;%半徑 x=R*cos(alpha)+A(1); y=R*sin(alpha)+A(2); plot(x,y,-) axis equal首先先對角度alpha分割成小區(qū)間,且求出相應(yīng)的cos和sin值,再根據(jù)輸入的半徑和圓心坐標(biāo)A,帶入公式求得圓上的點(diǎn)的坐標(biāo),再繪制出圖像。3.1.3 繪制橢圓function tuocircle(a,b)t=0:pi/20:2*pi; x=a*cos(t); y=b*sin(t); pl

7、ot(x,y)首先先對角度t分割成小區(qū)間得出相應(yīng)的cos和sin值,根據(jù)再根據(jù)輸入的長半軸a與短半軸b完善參數(shù)方程求得橢圓上的點(diǎn)的坐標(biāo),再繪制出圖像。3.1.4 繪制拋物線function parabola(A,B,C)x=A(1) B(1) C(1); y=A(2) B(2) C(2); %y=ax2+b p=polyfit(x,y,2); t=-10:.1:10;%指定繪圖區(qū)間 s=polyval(p,t); plot(t,s,x,y,or)通過三個點(diǎn)繪制拋物線是通過三點(diǎn)的擬合繪制出圖像;通過函數(shù)是在一個區(qū)間上畫出函數(shù)圖像。3.2 圖形的平移function change(T1,V1)中:

8、 T=1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1; T(1,4)=T1(1); T(2,4)=T1(2); T(3,4)=T1(3); ALL=T %最后的變換矩陣V2=ALL*V1;V=V2;先設(shè)T為平移變換矩陣,然后通過帶入平移的長度,形成最終的平移矩陣,成為最重的變換舉證ALL,將ALL左乘須變換矩陣V1,最終得到變換后的圖形矩陣V。3.3圖形的旋轉(zhuǎn)function change2(R1,V1)R=0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1;sina=sin(R1); cosa=cos(R1); R(1,1)=cosa; R(1,2)=-sina;

9、 R(2,1)=sina; R(2,2)=cosa; ALL=R %最后的變換矩陣V2=ALL*V1;V=V2;先設(shè)R為旋轉(zhuǎn)變換矩陣,首先就將帶入的角度求出sina和cosa值,然后對應(yīng)公式將值帶入矩陣的對應(yīng)位置形成最終的旋轉(zhuǎn)矩陣,成為最終的變換矩陣ALL,將ALL左乘須變換矩陣V1,最終得到變換后的圖形矩陣V。3.4圖形的縮放function change3(S1,V1) S=0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 1; S(1,1)=S1(1); S(2,2)=S1(2); S(3,3)=S1(3); ALL=S V2=ALL*V1;V=V2;將S設(shè)為縮放變換矩陣,然后

10、對應(yīng)公式將縮放的值帶入矩陣的對應(yīng)位置形成最終的平移矩陣,成為最終的變換矩陣ALL,將ALL左乘須變換矩陣V1,最終得到變換后的圖形矩陣V。四、結(jié)果分析4.1繪制直線、圓、橢圓、拋物線4.1.1 直線 line(1 2,2 1)4.1.2 圓 circle(2 3,2)4.1.3 橢圓 tuocircle(30,0.7)4.1.4 拋物線根據(jù)三個點(diǎn)畫出拋物線: parabola(1 2,5 6,3 9)根據(jù)函數(shù)畫拋物線:4.2 圖形的平移 showCubic(0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1) chan

11、ge(4,5,6,0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1)平移矩陣:最終總變換矩陣:變換后的矩陣:4.3 圖形的旋轉(zhuǎn) showCubic(0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1) change2(pi/3,0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1)旋轉(zhuǎn)矩陣:最終變換矩陣:變換后的矩陣:4.4 圖形的縮放 showCubic(0,0,1,

12、1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1) change3(0.8,0.5,0.3,0,0,1,1;1,0,1,1;1,1,1,1;0,1,1,1;0,0,0,1;1,0,0,1;1,1,0,1;0,1,0,1)縮放矩陣:最終變換矩陣:變換后矩陣:縮放前圖形:縮放后圖形:五、總 結(jié)這次的課程設(shè)計主要是運(yùn)用軟件matlb來實(shí)現(xiàn)的。這次對簡單圖形的繪制,如:直線、拋物線、圓、橢圓等,還有對圖形進(jìn)行平移、旋轉(zhuǎn)、縮放操作。簡單圖形的繪制,主要是通過編寫matlab命令來實(shí)現(xiàn),對于平移、旋轉(zhuǎn)、縮放主要是對應(yīng)的矩陣要是四維的,然后對

13、應(yīng)矩陣的分量調(diào)整好,再按照倒序相乘,得出變換矩陣,最后與原來的圖形矩陣相乘后得出新的矩陣。所以這次的課程設(shè)計是按照書上的算法步驟先求出矩陣,然后求出變換后的圖像的矩陣,因?yàn)樾枰兂善浯巫鴺?biāo),所以需要添加一個最后的分量1,這樣各種矩陣的運(yùn)算才可以實(shí)現(xiàn)。剛開始對這個地方不懂,編程出現(xiàn)了很多錯誤。對于題目要求:在圖形顯示中,使用鼠標(biāo)、鍵盤或下拉菜單等方式進(jìn)行交互控制。這個地方,我們通過在matlab調(diào)用命令來實(shí)現(xiàn)對圖形的平移、旋轉(zhuǎn)、縮放等操作。六、課程設(shè)計心得體會這個學(xué)期學(xué)了計算機(jī)圖形學(xué)后,對我們有了很多幫助。老師講解的非常詳細(xì),也舉了很多生動的例子。所以對圖形學(xué)的研究內(nèi)容、應(yīng)用、發(fā)展簡歷等。平時也

14、通過課內(nèi)實(shí)驗(yàn)對所學(xué)的內(nèi)容通過編程實(shí)現(xiàn)各個功能,這讓我們積累了一定的編程能力,同時對matlab也能更好的運(yùn)用。本課程主要內(nèi)容包括直線、圓、橢圓、拋物線等簡單圖形的繪制;交互的對簡單圖形進(jìn)行平行;能夠交互式的對簡單圖形進(jìn)行旋轉(zhuǎn)。這次對圖形進(jìn)行平移、旋轉(zhuǎn)、縮放的操作,主要是對應(yīng)的矩陣要是四維的,然后對應(yīng)矩陣的分量調(diào)整好,再按照倒序相乘,得出變換矩陣,最后與原來的圖形矩陣相乘后得出新的矩陣。通過這次的課程設(shè)計,使我們的自學(xué)能力與動手實(shí)踐能力得到相當(dāng)大的提高,編程并不是靠看書本就能學(xué)會的,而是要靠一步步的調(diào)試一條條指令的修改試運(yùn)行中學(xué)習(xí)進(jìn)步的,盲目的看書并不能提高自己水平。這次的課程設(shè)計就是按照書上的

15、步驟求矩陣,然后求出變換后的圖像的矩陣,因?yàn)樾枰兂善浯巫鴺?biāo),所以需要添加一個最后的分量1,這樣各種矩陣的運(yùn)算才可以實(shí)現(xiàn)。在本次的課設(shè)中讓我們對計算機(jī)圖形學(xué)有了一個更加深我們對計算機(jī)圖形學(xué)課程理論知識的認(rèn)識和理解,使我找到了理論與實(shí)踐的最佳結(jié)合點(diǎn)。以前可能只是簡單的了解記住課本一些原理,通過自己編寫程序?qū)⒗碚摳吨T實(shí)踐后。那些知識更加使我真正明白并深記著,尤其能找到一些以前會忽略的細(xì)節(jié)。在運(yùn)用matlab編寫程序的時候,首先對圖形的旋轉(zhuǎn)、平移、縮放的原理有了深入的學(xué)習(xí)和認(rèn)識,然后,在編寫程序的時候從分考慮算法,用最簡單的方法實(shí)現(xiàn)題目要求。題目中要求交互式的實(shí)現(xiàn)功能,但是我們直接運(yùn)用matlab用

16、命令實(shí)現(xiàn)了題目要求。通過這次課程設(shè)計,我們學(xué)會了團(tuán)隊(duì)合作,也更加明白了團(tuán)隊(duì)合作的效率和意義,讓我們認(rèn)識到一起學(xué)習(xí)并完成一項(xiàng)任務(wù)的意義。從這次的課程設(shè)計我們知道了自己的不足,學(xué)習(xí)的知識不夠充分,對于現(xiàn)有資源材料的利用學(xué)習(xí)率太低等方面的缺點(diǎn),對今后的學(xué)習(xí)和工作進(jìn)步都有非常大的幫助。參考文獻(xiàn)1倪明田,吳良芝.計算機(jī)圖形學(xué)M北京:北京大學(xué)出版社,1999.2孔令德. 計算機(jī)圖形學(xué)課程設(shè)計教程M北京:北京大學(xué)出版社,2010.3白建軍OpenGL三維圖形設(shè)計與制作M北京:人民郵電出版社,1998.源程序1繪制直線function line(A,B)plot(A,B)2繪制圓function circle

17、(R)alpha=0:pi/50:2*pi;%角度0,2*pi %R=2;%半徑 x=R*cos(alpha); y=R*sin(alpha); plot(x,y,-) axis equal3繪制橢圓function tuocircle(a,b)t=0:pi/20:2*pi; x=a*cos(t); y=b*sin(t); plot(x,y)4根據(jù)三點(diǎn)繪制拋物線function parabola(A,B,C)%A=1 2; %B=5 6; %C=3 9; x=A(1) B(1) C(1); y=A(2) B(2) C(2); %y=ax2+b p=polyfit(x,y,2); t=-10:.

18、1:10;%指定繪圖區(qū)間 s=polyval(p,t); plot(t,s,x,y,or)5根據(jù)函數(shù)繪制拋物線x=0:0.1:10;y=3*x.2plot(x,y)6圖形的平移變換function change(T1,V1) T=1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1; T(1,4)=T1(1); T(2,4)=T1(2); T(3,4)=T1(3); T %平移 ALL=T %最后的變換矩陣 V2=ALL*V1; V=V2; V %變換后的圖形矩陣,下面畫圖 face = V(1:4,:); %1,2,3,4 fill3(face(:,1),face(:,2),fac

19、e(:,3),r); hold on; face = V(5:8,:); %5,6,7,8 fill3(face(:,1),face(:,2),face(:,3),b); hold on; face = V(2:3,:); V(7,:);V(6,:) %2,3,7,6 fill3(face(:,1),face(:,2),face(:,3),g); hold on; face = V(1,:);V(4,:);V(8,:);V(5,:); %1,4,8,5 fill3(face(:,1),face(:,2),face(:,3),y); hold on; face = V(7:8,:); V(4,:

20、);V(3,:) %4,3,7,8 fill3(face(:,1),face(:,2),face(:,3),b); hold on; face = V(1,:);V(2,:);V(6,:);V(5,:); %1,2,6,5 fill3(face(:,1),face(:,2),face(:,3),r); axis equal7圖形的旋轉(zhuǎn)變換function change2(R1,V1) R=0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1; sina=sin(R1); cosa=cos(R1); R(1,1)=cosa; R(1,2)=-sina; R(2,1)=sina; R(2

21、,2)=cosa; R %旋轉(zhuǎn) ALL=R %最后的變換矩陣 V2=ALL*V1; V=V2; V %變換后的圖形矩陣,下面畫圖 face = V(1:4,:); %1,2,3,4 fill3(face(:,1),face(:,2),face(:,3),r); hold on; face = V(5:8,:); %5,6,7,8 fill3(face(:,1),face(:,2),face(:,3),b); hold on; face = V(2:3,:); V(7,:);V(6,:) %2,3,7,6 fill3(face(:,1),face(:,2),face(:,3),g); hold on; face = V(1,:);V(4,:);V(8,:);V(5,:); %1,4,8,5 fill3(face(:,1),face(:,2),face(:,3),y); hold on; face = V(7:8,:); V(4,:);V(3,:) %4,3,7,8 fill3(face(:,1),face(:,2),face(:,3),b); hold on; face = V(1,:);V(2,:);V(6,:);V(5,:); %1,2,6,5 fil

溫馨提示

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

評論

0/150

提交評論