實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)

實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)

ID:22281830

大小:447.40 KB

頁數(shù):13頁

時(shí)間:2018-10-28

實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)_第1頁
實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)_第2頁
實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)_第3頁
實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)_第4頁
實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)_第5頁
資源描述:

《實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、實(shí)驗(yàn)三圖形裁剪算法實(shí)現(xiàn)實(shí)驗(yàn)學(xué)時(shí):2學(xué)時(shí)實(shí)驗(yàn)類型:驗(yàn)證型實(shí)驗(yàn)要求:必修在使用計(jì)算機(jī)處理圖形信息吋,計(jì)算機(jī)內(nèi)部存儲(chǔ)的圖形往往比較大,而屏幕顯示的只是閣的一部分。因此需要確定閣形中哪些部分落在顯示區(qū)之(Al,哪些落在顯示區(qū)之外,以使只顯示落在顯示區(qū)內(nèi)的那部分圖形。這個(gè)選擇過程稱為裁剪。最簡(jiǎn)單的裁剪方法是把各種圖形掃描轉(zhuǎn)換為點(diǎn)之盾,再判斷各點(diǎn)是否在窗內(nèi)。但那樣太費(fèi)時(shí),一般不可取。這是因?yàn)閮有╅w形紺成部分全部在窗UI外,可以完全排除,不必進(jìn)行掃描轉(zhuǎn)換。所以一般采川先裁剪再掃描轉(zhuǎn)換的方法,多邊形裁剪示意圖,如圖1-1所示。(a)裁剪前(b)裁剪后圖1-1多邊形裁剪示意圖直線裁剪1.直線和窗口的

2、關(guān)系直線和窗U的關(guān)系如圖1-2所示,可以分為如卜*3類:(1)整條直線在窗口內(nèi)。此時(shí),不需剪裁,顯示整條直線。(2)整條且線在窗口外,此時(shí),不需剪裁,不顯示整條K線。(3)部分直線在窗口內(nèi),部分直線在窗U外。此吋,需耍求出直線與窗框的交點(diǎn),并將窗口外的直線部分剪裁棹,顯示窗口內(nèi)的直線部分。直線剪裁算法冇兩個(gè)主要步驟。首先將不需剪裁的且線挑出,即刪去在窗外的直線。然后,對(duì)其余宜線,逐條與窗框求交點(diǎn),并將窗口外的部分刪去。2.Cohen-Sutherland直線剪裁算法以區(qū)域編碼為基礎(chǔ),將窗口及其周圍的8個(gè)方向以4bit的二進(jìn)制數(shù)進(jìn)行編碼。如圖1-3所示的編碼方法將窗UI及其鄰域分為5

3、個(gè)區(qū)域。(1)內(nèi)域:區(qū)域(0000)。(2)上域:區(qū)域(1001,1000,1010)。(3)下域:區(qū)域(0101,0100,0110)。(4)左域:區(qū)域(1001,0001,0101)。100110001010000100000010010101000110P,圖1-3WlI及M鄰域的5個(gè)區(qū)域及與肖線的關(guān)系(5)心域:區(qū)域(1010,0010,0110)。當(dāng)線段的兩個(gè)端點(diǎn)的編碼的邏輯“與”非零時(shí),線段妯然為不可見的。對(duì)某線段的兩各端點(diǎn)的區(qū)號(hào)進(jìn)行位與運(yùn)算,可知這兩個(gè)端點(diǎn)是否同在視區(qū)的上、下、左、右。算法的主要思想是,對(duì)每條直線,如P,P2利用以下步驟進(jìn)行判斷:①對(duì)直線兩端點(diǎn)編碼分別

4、記為C,(P,)={6/,,Z?hChJ,},C2(P2)={6Z2,b2,c2,么}其中,at、bi、d、式取值范圍為{l,0},/e{l,2}o②如果則顯示整條直線,取出下一條直線,返回步驟①;否則,進(jìn)入步驟③。③如果

5、1=1,則求直線與窗上邊的交點(diǎn),并刪去交點(diǎn)以上部分。如果

6、Z?2I=1?ICi—C*2

7、=1,丨d—d2

8、=1>進(jìn)什類似處理。④返回步驟①判斷K一條直線。多邊形裁剪多邊形裁剪算法的關(guān)鍵在于,通過剪裁,要保持窗uA多邊形的邊界部分,而且要將窗框的冇關(guān)部分按一定次序插入多邊形的保貿(mào)邊界之間,從而使剪裁后的多邊形的邊仍然保持封閉狀態(tài),以便填色算法得以正確實(shí)現(xiàn),多邊形

9、裁剪原理示意閣,如閣1-4所示。(b)按直線剪裁的多邊形圖1-4多邊形裁剪原理示意圖I(c)按多邊形剪裁后的多邊形(1)Sutherland-Hodgman算法思路:將多邊形的各邊先相對(duì)于窗U的某一條邊界進(jìn)行裁剪,然后將裁剪結(jié)果再與另一條邊界進(jìn)行裁剪,如此重復(fù)多次,便可得到最終結(jié)果。(2)實(shí)現(xiàn)方法:①設(shè)置兩個(gè)表。輸入頂點(diǎn)表(向量)——用于存放被裁剪多邊形的頂點(diǎn)輸出頂點(diǎn)表(線性鏈表)——用于存放裁剪過程中叫結(jié)果的頂點(diǎn)②輸入頂點(diǎn)表中各頂點(diǎn)要求按一定順序排列,一般可采用順時(shí)針或逆時(shí)針方向。③相對(duì)于裁剪窗口的各條邊界,按頂點(diǎn)表中的順序,逐邊進(jìn)行裁剪。(3)具體操作步驟如下:①P,?若位于邊

10、界線的可見一側(cè),則P,?送給輸出頂點(diǎn)表。②P,?若位于邊界線的不對(duì)見一側(cè),則將其舍棄。③除第一個(gè)頂點(diǎn)外,還要檢查每一個(gè)P,?和前一?頂點(diǎn)Py是否位于窗口邊界的同一?側(cè),若不在同一側(cè),則需計(jì)算出交點(diǎn)送給輸出頂點(diǎn)表。④最后一個(gè)頂點(diǎn)則還要與A—起進(jìn)行同樣的檢杏。如下閣1-6所示,是上述多邊形裁剪的原理示意閣。圖1-6多邊形裁剪原現(xiàn)示意圖2似q3Q圖形裁剪編程1.程序設(shè)計(jì)功能說明如圖1-7所示為圖形裁剪的實(shí)用程序運(yùn)行時(shí)的主界Iftf,首先根裾界側(cè)提示,在用戶區(qū)雙擊,出現(xiàn)所需要裁剪的各種線段,再單擊菜單中“閣形裁剪”,可選擇其下拉菜單的各閣形裁剪選項(xiàng)完成各種圖形裁剪(在窗U中紅矩形框外的線

11、段或多邊形被裁減掉)。圖1-7“圖形裁剪”程序主界面1.程序設(shè)計(jì)步驟程序“閣形裁剪”的設(shè)計(jì)步驟如不:(1)創(chuàng)建工程名稱為“圖形裁剪”單文檔應(yīng)用程序框梁(參看上面單文檔應(yīng)用程序框架的建立)。(2)編輯菜單資源。圖1-8圖形裁剪切界面設(shè)計(jì)如圖1-8所示的菜雄項(xiàng)。在工作區(qū)的ResourceView標(biāo)簽屮,單擊Menu項(xiàng)左邊“+”,然后雙擊其子項(xiàng)IDR.MAINFRAME,并根裾表1-9中的定義編輯菜單資源。表1-9菜單資源表菜單標(biāo)題菜單項(xiàng)標(biāo)題標(biāo)示符ID圖形裁剪線段裁剪ID.

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

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

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