計算機圖形學課程設計報告簡單圖形的繪制_第1頁
計算機圖形學課程設計報告簡單圖形的繪制_第2頁
計算機圖形學課程設計報告簡單圖形的繪制_第3頁
計算機圖形學課程設計報告簡單圖形的繪制_第4頁
計算機圖形學課程設計報告簡單圖形的繪制_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《計算機圖形學》課程設計報告學生姓名:學號:學院:班級:題目:簡單圖形的繪制指導教師:職稱:201目錄目錄 I一、選題背景 1二、算法設計 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圖形的平移 63.3圖形的旋轉 63.4圖形的縮放 7四、結果分析 74.1繪制直線、圓、橢圓、拋物線 74.1.1直線 74.1.2圓 84.1.3橢圓 84.1.4拋物線 84.2圖形的平移 94.3圖形的旋轉 104.4圖形的縮放 11五、總結 13六、課程設計心得體會 14參考文獻 15源程序 16一、選題背景二、算法設計繪制直線、圓、橢圓、拋物線繪制直線通過兩個點的坐標來繪制直線。計算機圖形學中二維圖形在顯示輸出之前需要掃描轉換,生成直線的算法一般有DDA算法和中點算法。繪制圓通過運用圓的參數(shù)方程來繪制圓的圖形,其中,(a,b)為圓心,r為半徑,運用參數(shù)方程,只需要確定半徑的長度和圓心的位置,即可繪制出圓。繪制橢圓通過運用橢圓的參數(shù)方程來繪制橢圓的圖形,其中,是已知的變量,a,b分別為長半軸,短半軸,當確定a和b后,通過參數(shù)方程即可得到這個橢圓的方程。繪制拋物線根據(jù)點繪制拋物線圖像是通過擬合完成,根據(jù)三個點的坐標,通過數(shù)據(jù)擬合,得到經(jīng)過這三個點的函數(shù)關系式,從而再根據(jù)這個函數(shù)關系式繪制出拋物線上其他的點,形成一條連續(xù)的拋物線;或直接根據(jù)已知函數(shù)繪制圖像是通過已知函數(shù)畫出圖像。三維幾何變換三維幾何變換是二維幾何變換的推廣。二維幾何變換在齊次坐標空間中可用33的變換矩陣表示,類似的,三維幾何變換在齊次坐標空間中可用44的變換矩陣表示。三維空間中的點的齊次坐標定義為,其中,為不等與零的任意常數(shù),,,。亦即點對應4維齊次坐標空間的一條直線:(2.)通常為了簡單起見,取為的齊次坐標。(1)平移變換平移變換將點在三個坐標軸方向上分別移動距離,得到新的一點,它們之間的關系表示為:,其中。三維平移變換在其次坐標下的矩陣表示為:(2.)(2)放縮變換三維放縮變換在齊次坐標下的矩陣表示:(2.)此變換的參照點為坐標原點,我們可以按下面步驟建立關于空間任一參照點的縮放變換:(1)平移使落于原點,變換為;(2)進行放縮變換;(3)平移回到原先的位置,變換為。從而關于參照點的縮放變換為(2.)(3)旋轉變換給定一點,首先將點和坐標表示成極坐標,即,其中。將點繞軸旋轉角后,得到。易知:(2.2.5上式矩陣形式為:(2.2.6從而繞軸旋轉角的變換在齊次坐標下的矩陣表示為:(2.2.7類似的,繞軸和軸的旋轉的變換矩陣分別為:(2.2.8(2.2.9如果要繞空間任意軸旋轉角,可按如下步驟實現(xiàn):(1)以為原點,為軸建立新的坐標系;(2)求出從坐標系到坐標系的變換;(3)將圖形對象變換到坐標系中;(4)在新坐標系中繞軸旋轉角,變換為;(5)將圖形對象變換為原坐標系中,變換為。這樣繞旋轉角的變換為:(2.)三、程序及功能說明繪制直線、圓、橢圓、拋物線……繪制直線plot(A,B)通過運用matlab中的plot函數(shù)畫出兩點之間的直線圖像。其中A,B為直線上的兩個點的坐標,通過兩點繪制直線。繪制圓functioncircle(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,'-')axisequal首先先對角度alpha分割成小區(qū)間,且求出相應的cos和sin值,再根據(jù)輸入的半徑和圓心坐標A,帶入公式求得圓上的點的坐標,再繪制出圖像。繪制橢圓functiontuocircle(a,b)t=0:pi/20:2*pi;x=a*cos(t);y=b*sin(t);plot(x,y)首先先對角度t分割成小區(qū)間得出相應的cos和sin值,根據(jù)再根據(jù)輸入的長半軸a與短半軸b完善參數(shù)方程求得橢圓上的點的坐標,再繪制出圖像。繪制拋物線functionparabola(A,B,C)x=[A(1)B(1)C(1)];y=[A(2)B(2)C(2)];%y=ax^2+bp=polyfit(x,y,2);t=-10:.1:10;%指定繪圖區(qū)間s=polyval(p,t);plot(t,s,x,y,'or')通過三個點繪制拋物線是通過三點的擬合繪制出圖像;通過函數(shù)是在一個區(qū)間上畫出函數(shù)圖像。圖形的平移functionchange(T1,V1)中:T=[1000;0100;0010;0001;]T(1,4)=T1(1);T(2,4)=T1(2);T(3,4)=T1(3);ALL=T%最后的變換矩陣V2=ALL*V1';V=V2;先設T為平移變換矩陣,然后通過帶入平移的長度,形成最終的平移矩陣,成為最重的變換舉證ALL,將ALL左乘須變換矩陣V1,最終得到變換后的圖形矩陣V。圖形的旋轉functionchange2(R1,V1)R=[0000;0100;0010;0001];sina=sin(R1);cosa=cos(R1);R(1,1)=cosa;R(1,2)=-sina;R(2,1)=sina;R(2,2)=cosa;ALL=R%最后的變換矩陣V2=ALL*V1';V=V2;先設R為旋轉變換矩陣,首先就將帶入的角度求出sina和cosa值,然后對應公式將值帶入矩陣的對應位置形成最終的旋轉矩陣,成為最終的變換矩陣ALL,將ALL左乘須變換矩陣V1,最終得到變換后的圖形矩陣V。functionchange3(S1,V1)S=[0000;0000;0000;0001];S(1,1)=S1(1);S(2,2)=S1(2);S(3,3)=S1(3);ALL=SV2=ALL*V1';V=V2;將S設為縮放變換矩陣,然后對應公式將縮放的值帶入矩陣的對應位置形成最終的平移矩陣,成為最終的變換矩陣ALL,將ALL左乘須變換矩陣V1,最終得到變換后的圖形矩陣V。四、結果分析繪制直線、圓、橢圓、拋物線直線>>line([12],[21])圓>>circle([23],2)橢圓>>tuocircle(30,0.7)拋物線根據(jù)三個點畫出拋物線:>>parabola([12],[56],[39])根據(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])>>change([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])平移矩陣:最終總變換矩陣:變換后的矩陣:圖形的旋轉>>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])旋轉矩陣:最終變換矩陣:變換后的矩陣:4.4圖形的縮放>>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])>>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])縮放矩陣:最終變換矩陣:變換后矩陣:縮放前圖形:縮放后圖形:五、總結這次的課程設計主要是運用軟件matlb來實現(xiàn)的。這次對簡單圖形的繪制,如:直線、拋物線、圓、橢圓等,還有對圖形進行平移、旋轉、縮放操作。簡單圖形的繪制,主要是通過編寫matlab命令來實現(xiàn),對于平移、旋轉、縮放主要是對應的矩陣要是四維的,然后對應矩陣的分量調(diào)整好,再按照倒序相乘,得出變換矩陣,最后與原來的圖形矩陣相乘后得出新的矩陣。所以這次的課程設計是按照書上的算法步驟先求出矩陣,然后求出變換后的圖像的矩陣,因為需要變成其次坐標,所以需要添加一個最后的分量1,這樣各種矩陣的運算才可以實現(xiàn)。剛開始對這個地方不懂,編程出現(xiàn)了很多錯誤。對于題目要求:在圖形顯示中,使用鼠標、鍵盤或下拉菜單等方式進行交互控制。這個地方,我們通過在matlab調(diào)用命令來實現(xiàn)對圖形的平移、旋轉、縮放等操作。六、課程設計心得體會這個學期學了計算機圖形學后,對我們有了很多幫助。老師講解的非常詳細,也舉了很多生動的例子。所以對圖形學的研究內(nèi)容、應用、發(fā)展簡歷等。平時也通過課內(nèi)實驗對所學的內(nèi)容通過編程實現(xiàn)各個功能,這讓我們積累了一定的編程能力,同時對matlab也能更好的運用。本課程主要內(nèi)容包括直線、圓、橢圓、拋物線等簡單圖形的繪制;交互的對簡單圖形進行平行;能夠交互式的對簡單圖形進行旋轉。這次對圖形進行平移、旋轉、縮放的操作,主要是對應的矩陣要是四維的,然后對應矩陣的分量調(diào)整好,再按照倒序相乘,得出變換矩陣,最后與原來的圖形矩陣相乘后得出新的矩陣。通過這次的課程設計,使我們的自學能力與動手實踐能力得到相當大的提高,編程并不是靠看書本就能學會的,而是要靠一步步的調(diào)試一條條指令的修改試運行中學習進步的,盲目的看書并不能提高自己水平。這次的課程設計就是按照書上的步驟求矩陣,然后求出變換后的圖像的矩陣,因為需要變成其次坐標,所以需要添加一個最后的分量1,這樣各種矩陣的運算才可以實現(xiàn)。在本次的課設中讓我們對計算機圖形學有了一個更加深我們對計算機圖形學課程理論知識的認識和理解,使我找到了理論與實踐的最佳結合點。以前可能只是簡單的了解記住課本一些原理,通過自己編寫程序?qū)⒗碚摳吨T實踐后。那些知識更加使我真正明白并深記著,尤其能找到一些以前會忽略的細節(jié)。在運用matlab編寫程序的時候,首先對圖形的旋轉、平移、縮放的原理有了深入的學習和認識,然后,在編寫程序的時候從分考慮算法,用最簡單的方法實現(xiàn)題目要求。題目中要求交互式的實現(xiàn)功能,但是我們直接運用matlab用命令實現(xiàn)了題目要求。通過這次課程設計,我們學會了團隊合作,也更加明白了團隊合作的效率和意義,讓我們認識到一起學習并完成一項任務的意義。從這次的課程設計我們知道了自己的不足,學習的知識不夠充分,對于現(xiàn)有資源材料的利用學習率太低等方面的缺點,對今后的學習和工作進步都有非常大的幫助。參考文獻[1]倪明田,吳良芝.計算機圖形學[M].北京:北京大學出版社,1999.[2]孔令德.計算機圖形學課程設計教程[M].北京:北京大學出版社,2010.[3]白建軍.OpenGL三維圖形設計與制作[M].北京:人民郵電出版社,1998.源程序1.繪制直線functionline(A,B)plot(A,B)2.繪制圓functioncircle(R)alpha=0:pi/50:2*pi;%角度[0,2*pi]%R=2;%半徑x=R*cos(alpha);y=R*sin(alpha);plot(x,y,'-')axisequal3.繪制橢圓functiontuocircle(a,b)t=0:pi/20:2*pi;x=a*cos(t);y=b*sin(t);plot(x,y)4.根據(jù)三點繪制拋物線functionparabola(A,B,C)%A=[12];%B=[56];%C=[39];x=[A(1)B(1)C(1)];y=[A(2)B(2)C(2)];%y=ax^2+bp=polyfit(x,y,2);t=-10:.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.圖形的平移變換functionchange(T1,V1)T=[1000;0100;0010;0001;]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,4fill3(face(:,1),face(:,2),face(:,3),'r');holdon;face=V(5:8,:);%5,6,7,8fill3(face(:,1),face(:,2),face(:,3),'b');holdon;face=[V(2:3,:);V(7,:);V(6,:)]%2,3,7,6fill3(face(:,1),face(:,2),face(:,3),'g');holdon;face=[V(1,:);V(4,:);V(8,:);V(5,:);]%1,4,8,5fill3(face(:,1),face(:,2),face(:,3),'y');holdon;face=[V(7:8,:);V(4,:);V(3,:)]%4,3,7,8fill3(face(:,1),face(:,2),face(:,3),'b');holdon;face=[V(1,:);V(2,:);V(6,:);V(5,:);]%1,2,6,5fill3(face(:,1),face(:,2),face(:,3),'r');axisequal7.圖形的旋轉變換functionchange2(R1,V1)R=[0000;0100;0010;0001];sina=sin(R1);cosa=cos(R1);R(1,1)=cosa;R(1,2)=-sina;R(2,1)=sina;R(2,2)=cosa;R%旋轉ALL=R%最后的變換矩陣V2=ALL*V1';V=V2';V%變換后的圖形矩陣,下面畫圖face=V(1:4,:);%1,2,3,4fill3(face(:,1),face(:,2),face(:,3),'r');holdon;face=V(5:8,:);%5,6,7,8fill3(face(:,1),face(:,2),face(:,3),'b');holdon;face=[V(2:3,:);V(7,:);V(6,:)]%2,3,7,6fill3(face(:,1),face(:,2),face(:,3),'g');holdon;face=[V(1,:);V(4,:);V(8,:);V(5,:);]%1,4,8,5fill3(face(:,1),face(:,2),face(:,3),'y');holdon;face=[V(7:8,:);V(4,:);V(3,:)]%4,3,7,8fill3(face(:,1),face(:,2),face(:,3),'b

溫馨提示

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

評論

0/150

提交評論