計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告_第1頁(yè)
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告_第2頁(yè)
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告_第3頁(yè)
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告_第4頁(yè)
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)報(bào)告姓名:謝云飛學(xué)號(hào):20112497班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)11-2班實(shí)驗(yàn)地點(diǎn):逸夫樓507實(shí)驗(yàn)時(shí)間:2014.03實(shí)驗(yàn)1直線的生成1實(shí)驗(yàn)?zāi)康暮鸵罄斫庵本€生成的原理;掌握典型直線生成算法;掌握步處理、分析 實(shí)驗(yàn)數(shù)據(jù)的能力;編程實(shí)現(xiàn)DDA算法、Bresenham中點(diǎn)算法;對(duì)于給定起點(diǎn)和終點(diǎn)的 直線,分別調(diào)用DDA算法和Bresenham中點(diǎn)算法進(jìn)行批量繪制,并記 錄兩種算法的繪制時(shí)間;利用excel等數(shù)據(jù)分析軟件,將試驗(yàn)結(jié)果編 制成表格,并繪制折線圖比較兩種算法的性能。2實(shí)驗(yàn)環(huán)境和工具開(kāi)發(fā)環(huán)境:Visual C+ 6.0實(shí)驗(yàn)平臺(tái):Experiment_Frame_One (自

2、制平臺(tái))。本實(shí)驗(yàn)提供名為Experiment_Frame_One 的平臺(tái),該平臺(tái)提供基本 繪制、設(shè)置、輸入功能,學(xué)生在此基礎(chǔ)上實(shí)現(xiàn)DDA算法和Mid_Bresenham 算法,并進(jìn)行分析。平臺(tái)界面:如錯(cuò)誤!未找到引用源。所示設(shè)置:通過(guò)view-setting 菜單進(jìn)入,如錯(cuò)誤!未找到引用源。所示輸入:通過(guò)view-input菜單進(jìn)入.如錯(cuò)誤!未找到引用源。所示 實(shí)現(xiàn)算法:DDA算法:void CExperiment_Frame_OneView:DDA(int X0, int Y0, int X1, int Y1)Mid_Bresenham法:voidCExperiment_Frame_OneV

3、iew:Mid_Bresenham(intX0, int Y0, int X1,int Y1)3 實(shí)驗(yàn)結(jié)果3.1 程序流程圖) DDA 算 法 流 程 圖 :開(kāi) 始定 義 兩 點(diǎn) 坐 標(biāo) 差 dx , dy , 以 及 epsl , 計(jì) 數(shù) k=0 , 描 繪 點(diǎn) 坐 標(biāo) x,y , x 增 量 xIncre , y 增 量 yIncreJ輸 入 兩 點(diǎn) 坐 標(biāo) x1,y1,x0,y0dx=x1-x0,dy=y1-y0;反之若 |dx|dy|epsl=|dx|epsl=|dy|J.JJxIncre=dx/epsl; yIncre=dy/epslJ填 充 ( 強(qiáng)制 整 形 )(x+0.5,y+0

4、.5); TOC o 1-5 h z J橫坐 標(biāo)x+xIncre;縱坐 標(biāo)y+yIncre;JT若 kx1x=x1;x1=x0;x0=x;x=x0;反之Y=y1;y1=y0;y0=y;y=y0;坐 標(biāo) 差 dx=x1-x0;dy=y1-y0;判 斷 值 d=dx-2*dy;UpIncre=2*dx-2*dy;DownIncre=-2*dy;填 充 點(diǎn) (x,y) , 且 x=x+1; J J J TOC o 1-5 h z JJT若 d0反 之y=y+1, 且 d=d+UpIncre d=d+DownIncreJ.JTJ若 xabs(dy) epsl=abs(dx);else epsl=abs

5、(dy);xIncre=(float)dx/(float)epsl;yIncre=(float)dy/(float)epsl;for(k=0;kX1)x=X1;X1=X0;X0=x;y=Y1;Y1=Y0;Y0=y;x=X0;y=Y0;dx=X1-X0;dy=Y1-Y0;d=dx-2*dy;UpIncre=2*dx-2*dy;DownIncre=-2*dy;while(xX1)DrawPixel(x,y);x+;if(dLI JJLL LU J 1 LLJ1 LUJMT,t r r iH i rm i0r Lir / t r ,TrrmTrmiirr Lr i r r lit w t f lif

6、 iy OLin t rm i v r n1,t*,、t rmt y 產(chǎn)尸1,)中,i /,frPR itLij j I LLU 5 a CijJk C u jjji CCu3 I Cuj ICCij j HCijjji i-4Lir r t l ir inLIE r T r Lir 11IT W 卜/ W k |睢 41 0看 4J U. U E-l-J -a X ILLU J 1 L UJ JI LLiJJ JL L UJ 1 L 工口J jkq J 4 I. Ite-IJ JWl X、JI J 4- L H JEE困況88凄%建臚(重戚I gum”露口 “mmw ! Jll J 上事 J

7、RJ d J J Ial i 遇 h JIL.U J 鼻Ui ui Jle ri,r f r er n t r , LUJ J J WJ L I J X& i_ -iJ J.- I- b- l-l T 4X R- Li-ii J x ITT |I b| r rrn / 7 rrm r r fmi t t r (Tit、nr rrTi r rc -i t IC035CCODCi:O3X U IUIU J J.t-i t r rij-1 -i tL Y-J L Ll_i I- IT T rrmi r iTsmL JI- -Ir iri-1 r匚6 E 皿? X KQ2 X XCICjCCiZCCC

8、I CCCj a iCiiJ l-l - A L. ii-l -I-I J- iU UM-I J J. l1 ,餐艇 hM 4 *lf,n * f m t 尸產(chǎn),r r Fir - fHE匚二口 ? X C ?AJ J. LILJ J A L 33 K f tR “由i ctdj itoo 31 COD J K c 口第工 trnii 2笛 - 1 1 . A L.一 X L UIUJ1 -I X J IU X IL I-II J JL J J I上LI JI L iL. UI-I -I J. L JI J皆l寸 ITLIF r E 口其 LI_1 k 4-1J J p-l-l-il FEF

9、1 rc COj LUIJId 1i-a f PLf-q 產(chǎn)rmj: n_ L i-J _i 上 L _ -1 J- il 6 J T - -4- KT-IT 4- It rm i t rrm r r nr a- r an it r ram r r XCCij jiLtijSKi 工 J J LJJL J L. JJ J. L e ku * 恒 t ir rn n t r m -n t r KCGCJ3CW3KC JLLI_JILLJLIL Ji l L iJ j dL L bid ji 上 *,I- KT T K IT T + 產(chǎn)、,vr 產(chǎn)i,r f ,,7廣昌,F(xiàn)FLir -i t r

10、ir in r tm r r riruiuji -i.EFI -1ht rli-it t rinCO?T:rr.:i4/4 HlH 卜h RI * t t r im t t r tri -t -i r r m - t r li-i r JICCD3XCCIJ3ICCOICOD3 JLL*JAW,W J J. 事J 、-I 一二(- J 4 L JI- JiCiCCQUCCCmLil-l-fll J ,K.a_1 1 J_ ILLE,w pfit,寸 kip 解 rir “ r門,t pli, Fi-i rrrfi-iT rrmrrrimv rraii t(mI CCaj 5 / lS-5j J

11、CC CQ j Z CCG5 工(匚ill i_l i_K_ i-i j 一 J,4 h. Li-J _i x L上 Lii_l_e J l-HIT 4 l-B-n-l vTuT + I- l-IT 4- I-B-4-I-I * bl-IT ruTi r rr im t rrm r r rmi t rri-ii t mm lci rrm i t rriTt r r m t rirnm trit r le rrrii X CCC 金L1 l-l-I r 4 c C*J )3卜 V-I-IT rrmi LC1*j L 1 l_ i-i- i. l 4 I-4 I 44卜 TTT + + isrrm

12、iTrmrir irirriiiTcrri-iirrlCCj X lCO j X kH 1 修 TLLLrFLLLfTirJU L L Jl L L,兒L LL7ULI JL 運(yùn)行結(jié)果分析DDA 算法基本上沒(méi)有什么問(wèn)題,Mid_Bresenham 算法在網(wǎng) 格尺寸比較大時(shí)誤差較大,通過(guò)改變網(wǎng)格尺寸大小即能較為精確地 描繪出所繪直線。總之在誤差允許的范圍類,實(shí)驗(yàn)結(jié)果令人滿意。4思考題(可選)如何測(cè)試比較算法的性能?提示1:因?yàn)槔L制1條直線時(shí)間很短,所以需要繪制大量直線 才能比較它們之間的性能;提示2: drawpixel 需要耗費(fèi)時(shí)間,但它的時(shí)間性能和直線繪制 算法無(wú)關(guān),因此在比較不同算法性能時(shí)

13、,應(yīng)該屏蔽它的影響, 如何屏蔽?5實(shí)驗(yàn)心得通過(guò)此次實(shí)驗(yàn),我對(duì)典型的直線繪制算法DDA算法、Bresenham 中點(diǎn)算法有了進(jìn)一步的了解與掌握。由于第一次做圖形學(xué)的相關(guān)實(shí)驗(yàn), 陌生感還是有的,對(duì)平臺(tái)也不太掌握,所以一開(kāi)始很難入門,但在老 師的幫助和同學(xué)的相互討論下,結(jié)果還是可觀的。兩個(gè)基本算法都得 以實(shí)現(xiàn)。希望隨著學(xué)習(xí)的加深,后續(xù)的實(shí)驗(yàn)?zāi)軌蜃龅母谩?shí)驗(yàn)2多邊形掃描轉(zhuǎn)換算法1實(shí)驗(yàn)?zāi)康暮鸵罄斫舛噙呅螔呙柁D(zhuǎn)換的原理;掌握典型多邊形掃描轉(zhuǎn)換算法;掌握 步處理、分析實(shí)驗(yàn)數(shù)據(jù)的能力;編程實(shí)現(xiàn)基本X-掃描線轉(zhuǎn)換算法(必做);編程實(shí)現(xiàn)有效邊表轉(zhuǎn)換算法(選做)。2實(shí)驗(yàn)環(huán)境和工具本試驗(yàn)提供自帶實(shí)驗(yàn)平臺(tái)開(kāi)發(fā)環(huán)境:

14、Visual C+ 6.0本實(shí)驗(yàn)提供名為Polygon_Conversion 的平臺(tái),該平臺(tái)提供基本繪制、 設(shè)置、輸入功能,學(xué)生在此基礎(chǔ)上實(shí)現(xiàn)X-掃描線算法和有效邊表轉(zhuǎn)換 算法。多邊形輸入:用戶按【功能】 【輸入多邊形】菜單開(kāi)始輸入多邊形;單擊鼠標(biāo)左鍵輸入多邊形頂點(diǎn);點(diǎn)擊鼠標(biāo)右鍵結(jié)束多邊形輸入,并將最后一個(gè)頂點(diǎn)和第一個(gè)頂 點(diǎn)進(jìn)行連接;參數(shù)設(shè)置:用戶按 功能】 【設(shè)置啟動(dòng)設(shè)置對(duì)話框設(shè)置內(nèi)容:填充色是否填充多邊形選擇轉(zhuǎn)換算法實(shí)現(xiàn)掃描轉(zhuǎn)換算法X- 掃 描 線 轉(zhuǎn) 換 算 法 :void CPolygon_ConversionView:X_Scan_Line_Conersion(int Vertice

15、s2, int VertexNum) 有效邊表轉(zhuǎn)換算法:void CPolygon_ConversionView:Active_Edge_Table_Conersion(int Vertices2, int VertexNum)3 實(shí)驗(yàn)結(jié)果3.1 程序流程圖X- 掃 描 線 轉(zhuǎn) 換 算 法 :開(kāi) 始(若構(gòu)點(diǎn)小于3個(gè)f結(jié)束)確定多邊形所占有的最大掃描線,得 到 多 邊 形 頂 點(diǎn) 的 最 小 和 最 大 y 值 (ymin 和 ymax)從ys=ymin 開(kāi) 始 掃 描 , 且 計(jì) 算 每 條 邊 的 方 程 式J J記錄ys與多邊形各邊交點(diǎn)T(判 斷 并 取 舍 交 點(diǎn) :頂 點(diǎn) 的 兩 條

16、邊 的 另 外 兩 個(gè) 端 點(diǎn) 的 y1,y2 的 值 比 ys 大 的 個(gè) 數(shù) 為 0,1,2,則 取 交 點(diǎn) 對(duì) 應(yīng) 個(gè) 數(shù) 為 0,1,2;)取完交點(diǎn)橫坐標(biāo)后排序交點(diǎn)橫坐標(biāo)x數(shù)組,并配對(duì)(1 , 2) ( 3, 4)T T填充配對(duì)區(qū)間若 掃 描 線 ys=ymax(結(jié) 束 )3.2 程序代碼void CPolygon_ConversionView:X_Scan_Line_Conersion(intVertices2, int VertexNum)int ymin,ymax,x10,i,j,n=0,x1,x2,y1,y2,x0,ys;ymax=0 xffffffff;ymin=0 x7ff

17、fffff;if(VertexNum=3)return;for(i=0;iVertexNum;+i) if(Verticesi1ymax) ymax=Verticesi1;for(ys=ymin;ys=ymax;ys+)n=0;for(j=0;jVertexNum;+j)x1=Verticesj0;y1=Verticesj1;x2=Vertices(j+1)%VertexNum0;y2=Vertices(j+1)%VertexNum1;if(y1=y2) continue ;if(ysmax(y1,y2)continue;x0=int(ys-y1)*(x2-x1)/(y2-y1)+x1+0.5

18、);if(ys=y1)continue;if(ys=y2)int tmp=0;if(yiys)+tmp;if(Vertices(j+2)%VertexNum1ys)+tmp;if(tmp%2=0) continue;xn=x0;n+;sort(x,x+n);/ 排序for(i=0;in;i+=2)/填充for(j=xi;j= nodesk&t 1)value=(Divide(t-nodesk),(nodesk+m-1-nodesk)*BKM(t,k,m-1,no des)+Divide(nodesk+m-t),(nodesk+m-nodesk+1)*BKM(t,k+1,m-1 ,nodes);return value;生 成 曲 線 的 節(jié) 點(diǎn) 矢 量 :bool CFreeform_CurveView:Create_Nodes_Vector(int n,int m,int SplineType, float nodes)switch(SplineType) case 0: / 均 勻 B 樣 條 曲 線/ 添 加 代 碼 for(int i=0;i=n+m;i+) nodesi=i;break;case 1: / 開(kāi) 放 均 勻 B 樣 條 曲 線/添加代碼int i=0;for(;im;i+)nodesi=0;for(;i=n;i+)nodesi=i-m+

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論