計(jì)算機(jī)圖形學(xué)圖形裁剪.doc

計(jì)算機(jī)圖形學(xué)圖形裁剪.doc

ID:59131552

大?。?0.50 KB

頁數(shù):9頁

時(shí)間:2020-09-12

計(jì)算機(jī)圖形學(xué)圖形裁剪.doc_第1頁
計(jì)算機(jī)圖形學(xué)圖形裁剪.doc_第2頁
計(jì)算機(jī)圖形學(xué)圖形裁剪.doc_第3頁
計(jì)算機(jī)圖形學(xué)圖形裁剪.doc_第4頁
計(jì)算機(jī)圖形學(xué)圖形裁剪.doc_第5頁
資源描述:

《計(jì)算機(jī)圖形學(xué)圖形裁剪.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、寧夏師范學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院《計(jì)算機(jī)圖形學(xué)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)序號:8實(shí)驗(yàn)項(xiàng)目名稱:圖形裁剪學(xué) 號姓 名專業(yè)、班實(shí)驗(yàn)地點(diǎn)指導(dǎo)教師時(shí)間一、實(shí)驗(yàn)?zāi)康模?.理解區(qū)域碼(regionCode,RC);2.設(shè)計(jì)Cohen-Sutherland直線裁剪算法和梁友棟-Barsky線段裁剪算法3.編程實(shí)現(xiàn)Cohen-Sutherland直線裁剪算法和梁友棟-Barsky線段裁剪算法二、實(shí)驗(yàn)內(nèi)容與步驟1.Cohen-Sutherland算法分析:Cohen-Sutherland線段裁剪算法也稱之為編碼算法,第一步判斷線段兩端是

2、否都位于窗口內(nèi),如果是,則線段完全可見;否則進(jìn)入第二步,判斷線段是否為顯然不可見,即線段的兩端點(diǎn)均落在窗口某邊所在直線的外側(cè),如果是,則裁減結(jié)束;否則進(jìn)入第三步,求線段與窗口邊延長線的交點(diǎn),這個(gè)交點(diǎn)將線段分為兩段,其中一段顯然不可見,丟棄。對余下的另一段重新進(jìn)行第一步,第二步判斷,直至結(jié)束。整個(gè)裁減的過程可以看作一個(gè)丟棄的過程。SP外側(cè)內(nèi)側(cè)SPi內(nèi)側(cè)情況1情況2SP內(nèi)側(cè)SPi外側(cè)情況3情況42.梁友棟-Barsky算法分析:(1)初始化線段交點(diǎn)的參數(shù):u1=0,u2=1;(2)計(jì)算出各個(gè)裁剪邊界的p、q值;

3、(3)調(diào)用函數(shù)clipTest(),在函數(shù)中根據(jù)p、q來判斷:是舍棄線段還是改變交點(diǎn)的參數(shù)。  ?、佼?dāng)p<0時(shí),參數(shù)r用于更新u1;    ?。╱1=max{u1,…,rk})  ?、诋?dāng)p>0時(shí),參數(shù)r用于更新u2?!    。╱2=min{u2,…,rk})  ?、廴绻铝藆1或u2后,使u1>u2,則舍棄該線段。  ?、墚?dāng)p=0且q<0時(shí),因?yàn)榫€段平行于邊界并且位于邊界之外,則舍棄該線段。見下圖所示。(4)p、q的四個(gè)值經(jīng)判斷后,如果該線段未被舍棄,則裁剪線段的端點(diǎn)坐標(biāo)由參數(shù)u1和u2的值決定。三、程

4、序代碼:1.Cohen-Sutherland程序代碼:#include#includeclasswcPt2D{public:GLfloatx,y;};inlineGLintround(constGLfloata){returnGLint(a+0.5);}constGLintwinLeftBitCode=0x1;constGLintwinRightBitCode=0x2;constGLintwinBottomBitCode=0x4;constGLintwinTopBitC

5、ode=0x8;voidinit(void){glClearColor(1.0,1.0,1.0,0.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,640.0,0.0,480.0);glMatrixMode(GL_MODELVIEW);}voidsetPixel(GLintxCoord,GLintyCoord){glBegin(GL_POINTS);glVertex2i(xCoord,yCoord);glEnd();}voidlineBres(intx0,inty

6、0,intxend,intyend){intdx=fabs(xend-x0),dy=fabs(yend-y0);intp=2*dy-dx;inttwoDy=2*dy,twoDyMinusDx=2*(dy-dx);intx,y;if(x0>xend){x=xend;y=yend;xend=x0;}else{x=x0;y=y0;}setPixel(x,y);while(x

7、lineGLintinside(GLintcode){returnGLint(!code);}inlineGLintreject(GLintcode1,GLintcode2){returnGLint(code1&code2);}inlineGLintaccept(GLintcode1,GLintcode2){returnGLint(!(code1

8、code2));}GLubyteencode(wcPt2Dpt,wcPt2DwinMin,wcPt2DwinMax){GLubytecode=0x00;if(pt

9、.x

10、winLeftBitCode;if(pt.x>winMax.x)code=code

11、winRightBitCode;if(pt.y

12、winBottomBitCode;if(pt.y>winMax.y)code=code

13、winTopBitCode;return(code);}voidswapPts(wcPt2D*p1,wcPt2D*

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。