計算機圖形學(xué)實驗報告_第1頁
計算機圖形學(xué)實驗報告_第2頁
計算機圖形學(xué)實驗報告_第3頁
計算機圖形學(xué)實驗報告_第4頁
計算機圖形學(xué)實驗報告_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、院 系: 數(shù)學(xué)與統(tǒng)計學(xué)學(xué)院 專 業(yè): 信息與計算科學(xué)專業(yè) 年 級: 2013級 課程名稱: 計算機圖形學(xué) 組 號: 第35組 組 員: 李錚 秦文志 李丹 指導(dǎo)教師: 孫 陽 光 2016年06月05日年級2013級學(xué)號201321101027201321101028201321101029專業(yè)信息與計算科學(xué)專業(yè)姓名李錚秦文志李丹實驗時間2016年4月26日實驗地點9棟204實驗名稱實驗一、 直線的掃描轉(zhuǎn)換實驗類型設(shè)計型綜合型創(chuàng)新型實驗?zāi)康?)理解在顯示器上畫圖與在紙上畫圖的本質(zhì)區(qū)別;2)掌握直線的光柵掃描轉(zhuǎn)換過程;3)掌握不同算法繪制直線的思路和優(yōu)缺點。 實驗要求用基本增量算法和Bresen

2、ham算法畫直線1)將像素網(wǎng)格表現(xiàn)出來,建立網(wǎng)格坐標系;2)顯示判別式的計算過程和下一點的選擇策略;3)記錄生成點的坐標,建議用表的形式;4)圖形生成過程可以重復(fù)進行。實驗原理DDA代碼:clearclose allclcx1=0;y1=0;x2=15;y2=12;figure,line(x1,x2,y1,y2,'Color',0 0 1);length =abs(x2-x1)+1;dx=(x2-x1)/length;dy=(y2-y1)/length;k=dy/dx; x=x1;y=y1; hold on for i=1:lengthplot(round(x),floor(y

3、+0.5),'*r') x=x+1; y=y+k; end hold offBresenham代碼:clearclose allclc x1=0;y1=0;x2=15;y2=12;figure,line(x1,x2,y1,y2,'Color',0 0 1);length =abs(x2-x1)+1;dx=x2-x1;dy=y2-y1;e=2*dy-dx; x=x1;y=y1;hold onfor i=1:lengthplot(round(x),floor(y+0.5),'*r')if(e>=0) y=y+1; e=e-2*dx;endx=x

4、+1;e=e+2*dy;endhold off實驗結(jié)果分析Bresenham法:實驗心得體會成績評定教師簽名: 年 月 日年級2013級學(xué)號201321101027201321101028201321101029專業(yè)信息與計算科學(xué)專業(yè)姓名李錚秦文志李丹實驗時間2016年5月3日實驗地點9棟204實驗名稱實驗二、 圓弧的掃描轉(zhuǎn)換實驗類型設(shè)計型綜合型創(chuàng)新型實驗?zāi)康?)掌握圓和圓弧的光柵掃描轉(zhuǎn)換過程;2)掌握不同算法繪制圓弧的技巧和優(yōu)缺點。實驗要求用正負法和Bresenham算法畫圓弧1)將像素網(wǎng)格表現(xiàn)出來,建立網(wǎng)格坐標系;2)顯示判別式的計算過程和下一點的選擇策略;3)記錄生成點的坐標,建議用表的

5、形式;4)圖形生成過程可以重復(fù)進行。實驗原理Bresenham算法:function bresenham(b)x = 0;y = b;d=3-2*b;theta=0:0.01*pi:2*pi;x1=b*cos(theta)+0;y1=b*sin(theta)+0;plot(x1,y1);hold on plot(0,0,'b+');hold on;while x<yplot(x,y,'*'); plot(-x,-y,'*');plot(-x,y,'*');plot(x,-y,'*');if d<0d=d

6、+4*x+6;elsed=d+4*(x-y)+10;y=y-1;endx=x+1;if(x=y)plot(x,y,'*');plot(-x,-y,'*');plot(-x,y,'*');plot(x,-y,'*');endendhold off;正負法:function zf(b)x = 0;y = b;f=0;theta=0:0.01*pi:2*pi;x1=b*cos(theta)+0;y1=b*sin(theta)+0;plot(x1,y1);hold on plot(0,0,'b+');hold on;whi

7、le y>0plot(x,y,'*'); plot(-x,-y,'*');plot(-x,y,'*');plot(x,-y,'*');if f>0f=f-2*y+1;y=y-1;elsef=f+2*x+1;x=x+1;endif(y=0)plot(x,y,'*');plot(-x,-y,'*');plot(-x,y,'*');plot(x,-y,'*');endendhold off;實驗結(jié)果分析Bresenham算法:正負法: 實驗心得體會成績評定教師簽

8、名: 年 月 日年級2013級學(xué)號201321101027201321101028201321101029專業(yè)信息與計算科學(xué)專業(yè)姓名李錚秦文志李丹實驗時間2016年5月17日實驗地點9棟204實驗名稱實驗三、 直線段的裁剪實驗類型設(shè)計型綜合型創(chuàng)新型實驗?zāi)康挠肅ohen-SutherLand算法和liang _barsky算法進行線段裁剪1)理解裁剪的相關(guān)概念 2)掌握直線段的一般裁剪過程; 3)理解并掌握Cohen-SutherLand 算法的編碼思想; 4)理解并掌握Liang_Barsky算法的參數(shù)化裁剪思想;實驗要求1)將像素網(wǎng)格表現(xiàn)出來,建立網(wǎng)格坐標系;2)交互輸入剪裁線段和裁剪窗口;

9、3)對于線段裁剪,線段被窗口的四條邊裁剪的過程要顯示出來;4)裁剪過程可以重復(fù)進行。實驗原理Cohen-SutherLand算法核心代碼:function Lines=Cohen_Sutherland(line,Rectangle)%編碼裁剪算法%line為線段端點矩陣,共四列,其數(shù)據(jù)含義如下:% 端點A x坐標 端點A y坐標 端點B x坐標 端點B y坐標%Rectangle為窗口邊界值,共四個元素,其含義分別為Xwl,Xwr,Ywb,Ywt。%首先檢測參數(shù)是否合法row column=size(line);if column<4|length(Rectangle)<4 Lin

10、es=; fprintf('參數(shù)不合法不合法'); return ;end%程序中主要變量說明%code為線段端點的編碼矩陣,兩行四列,第一行為點P1的編碼,第二行為點P2的編碼% 四列的含義為:D0,D1,D2,D3%依次處理line的各個線段 k=0; Lines=;for i=1:length(line(:,1) %取出第i條線段 P1=line(i,1,2); P2=line(i,3,4); %計算斜率 PP=P1-P2; if PP(1)=0 k=inf; else k=PP(2)/PP(1); end finished=false; while(finished)

11、%對點P1和P2進行編碼 code= P1(1)<Rectangle(1),P1(1)>Rectangle(2),P1(2)<Rectangle(3),P1(2)>Rectangle(4); P2(1)<Rectangle(1),P2(1)>Rectangle(2),P2(2)<Rectangle(3),P2(2)>Rectangle(4); ; % P1,P2,k,code %進行簡取或簡棄的判斷 test=code(1,:)|code(2,:); %判斷是否簡取 if isempty(find(test>0,1) Lines=Lines

12、;P1,P2; finished=true; end %若當前線段處理完成,則退出 if finished break; end %判斷是否簡棄 test=code(1,:)&code(2,:); if isempty(find(test>0, 1) finished=true; end if finished break; end %確保P1在窗口之外 if isempty(find(code(1,:)>0,1) %交換P1,P2的坐標值和編碼 PT=P1;P1=P2;P2=PT; PT=code(1,:);code(1,:)=code(2,:);code(2,:)=PT

13、; end %從低位開始找編碼值為1的地方 D=find(code(1,:)>0,1); if D<=2 %此時P1位于窗口的左邊或右邊 if k=0 %若是水平線,則y不變,x變?yōu)榇翱诘淖筮吔缁蛴疫吔?%且此時k不會等于inf,否則線段處于簡棄狀態(tài)。 P1(1)=Rectangle(D); %P1(2)=Rectangle(find(code(1,3,4)>0,1); else %若線段是斜線,則計算y值,x值變?yōu)榇翱诘淖筮吔缁蛴疫吔?P1=Rectangle(D),P1(2)+k*(Rectangle(D)-P1(1); end else %此時P1位于窗口的上方或下方

14、if k=inf %若線段是豎直線,則x不變,y變?yōu)榇翱诘纳线吔缁蛳逻吔?%且此時k不會等于0,否則線段將處于簡棄狀態(tài)。 P1(2)=Rectangle(D); else %若線段是斜線,則計算x值,y值變?yōu)榇翱诘纳线吔缁蛳逻吔纭?P1=P1(1)+(Rectangle(D)-P1(2)/k,Rectangle(D); end end %對P1和P2重新編碼,再次計算。 % P1,P2,k,code % pause(10); % scanf(D,'%d'); % inputdlg(''); endend%對最終點進行取整運算%Lines=round(Lines)

15、;end實驗結(jié)果分析Cohen-SutherLand算法:實驗心得體會 成績評定教師簽名: 年 月 日年級2013級學(xué)號201321101027201321101028201321101029專業(yè)信息與計算科學(xué)專業(yè)姓名李錚秦文志李丹實驗時間2016年5月24日實驗地點9棟204實驗名稱實驗四、 多邊形的裁剪實驗類型設(shè)計型綜合型創(chuàng)新型實驗?zāi)康?1)理解多邊形裁剪與直線段裁剪的區(qū)別; 2)掌握多邊形的裁剪過程; 3)理解并掌握Sutherland-Hodgman算法的裁剪思想實驗要求用Sutherland-Hodgman算法進行多邊形裁剪1)將像素網(wǎng)格表現(xiàn)出來,建立網(wǎng)格坐標系;2)交互輸入剪裁線段

16、和裁剪窗口;3)多邊形被窗口的四條邊裁剪的過程以及多邊形頂 點增刪的過程要顯示出來;4)裁剪過程可以重復(fù)進行。 實驗原理核心算法:function PolygonClipping % 這是一個基于divide and conquer策略的Sutherland-Hodgeman多邊形裁剪算法的Matlab程序 % % Copyright (c) Mar, 2006. Smart. All rights reserved. % Department of Computer Science & Technology % Northern China Electric Power Univer

17、sity(Beijing)(NCEPU) % % 輸入?yún)?shù) %xp = 0.5, -2, -2, 1.5, 1.5, 0.5, 0.5, -1.5, -1.5, 0.5; % 待裁剪的多邊形 %yp = -1.5, -1.5, 2, 2, 0, 0, 1.5, 1.5, 0.5, -1.5; xp = -2, 0.2, 1.6, -2; yp = 0.5, -2, 1.5, 0.5; nVertex = length(xp)-1; % 多邊形頂點數(shù) xw = -1 1 1 -1 -1; yw = -1 -1 1 1 -1; % 矩形裁剪窗口(窗口邊界為逆時針方向,左下角頂點是第一個頂點) %

18、設(shè)置繪圖環(huán)境 hold on; axis equal; grid on; % 畫出要裁剪的多邊形和裁剪窗口 plot(xp,yp,'b-','LineWidth',2); for i = 1:nVertex text(xp(i),yp(i),'P' num2str(i) '(' num2str(xp(i) ',' num2str(yp(i) ')', 'FontSize',16,'Color',0,1,1); end plot(xw,yw,'g-','LineWidth',1.5); title('Sutherland-Hodgeman多邊形裁剪算法演示'); '按任意鍵繼續(xù).' pause; % Sutherland-Hodgeman多邊形裁剪算法實現(xiàn) InVertX = xp; InVertY = yp; clr = 'r' 'c' 'm' 'k' xText = (xw(1)+

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論