計算機圖形學裁剪技術

計算機圖形學裁剪技術

ID:38673283

大?。?89.00 KB

頁數:35頁

時間:2019-06-17

計算機圖形學裁剪技術_第1頁
計算機圖形學裁剪技術_第2頁
計算機圖形學裁剪技術_第3頁
計算機圖形學裁剪技術_第4頁
計算機圖形學裁剪技術_第5頁
資源描述:

《計算機圖形學裁剪技術》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。

1、裁剪算法反走樣方法裁剪直線段裁剪點裁剪點(x,y)在窗口內的充分必要條件是:直線段裁剪假定條件矩形裁剪窗口:[xmin,xmax][ymin,ymax]待裁剪線段:直線段裁剪待裁剪線段和窗口的關系(1)完全落在窗口內(2)完全落在窗口外(3)部分在內,部分在外求交測試順序固定(左右下上)最壞情形,線段求交四次。對于那些非完全可見、又非完全不可見的線段,需要求交,求交前先測試與窗口哪條邊所在直線有交?(按序判斷端點編碼中各位的值ClCtCrCb)Cohen-Sutherland算法直線段裁剪裁剪直線段裁剪Cohen-Sutherland算法中點分割算法參數化裁剪算法Liang-Ba

2、rskey算法多邊形裁剪Sutlerland_Hodgman算法Weiler-Athenton算法字符裁剪裁剪:確定圖形中哪些部分落在顯示區(qū)之內,哪些落在顯示區(qū)之外,以便只顯示落在顯示區(qū)內的那部分圖形。這個選擇過程稱為裁剪。在進行裁剪時,畫面中對應于屏幕顯示的那部分區(qū)域稱為窗口。圖形裁剪算法,直接影響圖形系統(tǒng)的效率。裁剪點的裁剪圖形裁剪中最基本的問題。假設窗口的左下角坐標為(xL,yB),右上角坐標為(xR,yT),對于給定點P(x,y),則P點在窗口內的條件是要滿足?(xL,yB)(xR,yT)直線段裁剪直線段裁剪算法是復雜圖形裁剪的基礎。復雜的曲線可以通過折線段來近似,從而裁

3、剪問題也可以化為直線段的裁剪問題。常用的線段裁剪方法三種:Cohen-Sutherland算法中點分割算法參數化裁剪算法Cohen-Sutherland裁剪基本思想:對于每條線段P1P2分為三種情況處理:(1)若P1P2完全在窗口內,則顯示該線段P1P2。(2)若P1P2明顯在窗口外,則丟棄該線段。(3)若線段不滿足(1)或(2)的條件,則在交點處把線段分為兩段。其中一段完全在窗口外,可棄之。然后對另一段重復上述處理。如何實現上述的處理呢?實現方法:采用下面的編碼方法將窗口邊線兩邊沿長,得到九個區(qū)域,每一個區(qū)域都用一個四位二進制數標識,直線的端點都按其所處區(qū)域賦予相應的區(qū)域碼,用

4、來標識出端點相對于裁剪矩形邊界的位置。100100010101100000000100101000100110Cohen-Sutherland算法將區(qū)域碼的各位從右到左編號,則坐標區(qū) 域與各位的關系為:任何位賦值為1,代表端點落在相應的位置上,否則該位為0。若端點在剪取矩形內,區(qū)域碼為0000。如果端點落在矩形的左下角,則區(qū)域碼為0101。直線段裁剪裁剪線段與窗口的關系:(1)線段完全可見;(2)顯然不可見;(3)其它提高裁剪效率:快速判斷情形(1)(2),對于情形(3),設法減少求交次數和每次求交時所需的計算量。一旦給定所有的線段端點的區(qū)域碼,就可以快速判斷哪條直線完全在剪取窗

5、口內,哪條直線完全在窗口外。Cohen-Sutherland算法若P1P2完全在窗口內code1=0,且code2=0,則“取”若P1P2明顯在窗口外code1&code2≠0,則“棄”第三種情況:在交點處把線段分為兩段。其中一段完全在窗口外,可棄之。然后對另一段重復上述處理。編碼線段裁剪Cohen-Sutherland算法Cohen-Sutherland裁減算法如何編碼呢?#defineLEFT1#defineRIGHT2#defineBOTTOM4#defineTOP8intencode(floatx,floaty){intc=0;if(x

6、LEFT;if(

7、x>Xmax)c=c

8、RIGHT;if(y

9、BOTTOM;if(y>Ymax)c=c

10、TOP;retrunc;}Cohen-Sutherland裁剪如何判定應該與窗口的哪條邊求交呢?編碼中對應位為1的邊。計算線段P1(x1,y1)P2(x2,y2)與窗口邊界的交點if(LEFT&code!=0){x=Xmin;y=y1+(y2-y1)*(Xmin-x1)/(x2-x1);}elseif(RIGHT&code!=0){x=Xmax;y=y1+(y2-y1)*(Xmin-x1)/(x2-x1);}elseif(BOTTOM&code!=0){y=Ymin;x=x1+

11、(x2-x1)*(Ymax-y1)/(y2-y1);}elseif(TOP&code!=0){y=Ymax;x=x1+(x2-x1)*(Ymax-y1)/(y2-y1);}void?CS_LineClip(x1,y1,x2,y2,XL,XR,YB,YT)floatx1,y1,x2,y2,XL,XR,YB,YT;//(x1,y1)(x2,y2)為線段的端點坐標,其他四個參數定義窗口的邊界{intcode1,code2,code;code1=encode(x1,y1);//對線段A端

當前文檔最多預覽五頁,下載文檔查看全文

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

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