梁友棟-Barsky直線裁剪算法計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)_第1頁(yè)
梁友棟-Barsky直線裁剪算法計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)_第2頁(yè)
梁友棟-Barsky直線裁剪算法計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)_第3頁(yè)
梁友棟-Barsky直線裁剪算法計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)_第4頁(yè)
梁友棟-Barsky直線裁剪算法計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、河南理工大學(xué)萬方科技學(xué)院課程設(shè)計(jì)報(bào)告2011 2012學(xué)年第二學(xué)期課程名稱 計(jì)算機(jī)圖形學(xué) 設(shè)計(jì)題目 計(jì)算機(jī)圖形學(xué)基本算法 演示系統(tǒng)設(shè)計(jì) 學(xué)生姓名 學(xué) 號(hào) 專業(yè)班級(jí) 網(wǎng)絡(luò)11升1班 指導(dǎo)教師 徐 文 鵬 2012 年 5 月 28 日18目 錄目 錄第1章 設(shè)計(jì)內(nèi)容與要求11.1總體目標(biāo)和要求11.2內(nèi)容與要求 11.2.1 直線的生成11.2.2 圓弧的生成11.2.3 線段裁剪21.2.4 多邊形裁剪21.2.5 綜合2第2章 總體設(shè)計(jì)32.1 Bresenham算法畫直線32.1.1 Bresenham算法畫直線理論基礎(chǔ)32.1.2 Bresenham算法畫直線原理32.2 Bresenh

2、am算法畫圓42.2.1 Bresenham算法畫圓理論基礎(chǔ)42.2.2 Bresenham算法畫圓原理52.3 梁友棟-Barsky算法進(jìn)行線段裁剪62.3.1梁友棟-Barsky算法進(jìn)行線段裁剪基本原理62.4 Sutherland-Hodgman算法進(jìn)行多邊形裁剪82.4.1 SutherlandHodgman多邊形裁剪算法思想82.4.2 點(diǎn)在邊界內(nèi)側(cè)的判斷方法82.4.4 Sutherland-Hodgeman多邊形裁剪算法特點(diǎn)8第3章 詳細(xì)設(shè)計(jì)93.1 Bresenham算法畫直線93.1.1 Bresenham 算法畫線算法具體實(shí)現(xiàn)過程93.2 Bresenham算法畫圓93.2

3、.1 Bresenham 算法畫圓核心代碼93.3 梁友棟-Barsky算法進(jìn)行線段裁剪103.3.1梁友棟-Barsky算法推導(dǎo)過程103.3.2梁友棟-Barsky算法進(jìn)行線段裁剪的步驟113.4 Sutherland-Hodgman算法進(jìn)行多邊形裁剪113.4.1 SutherlandHodgman多邊形裁剪算法步驟113.5將畫線、畫圓、線段裁剪和多邊形裁剪綜合12第4章 功能實(shí)現(xiàn)144.1用Bresenham算法畫線測(cè)試結(jié)果144.2用Bresenham算法畫圓測(cè)試結(jié)果144.3梁友棟-Barsky算法進(jìn)行線段裁剪測(cè)試結(jié)果154.4 Sutherland-Hodgman算法進(jìn)行多邊形

4、裁剪測(cè)試結(jié)果164.5將四種算法綜合測(cè)試結(jié)果16第5章 總結(jié)17參考文獻(xiàn)18第1章 基礎(chǔ)知識(shí)第1章 設(shè)計(jì)內(nèi)容與要求1.1 總體目標(biāo)和要求目標(biāo):以圖形學(xué)算法為目標(biāo),深入研究。繼而策劃、設(shè)計(jì)并實(shí)現(xiàn)一個(gè)能夠表現(xiàn)計(jì)算機(jī)圖形學(xué)算法原理的或完整過程的演示系統(tǒng),并能從某些方面作出評(píng)價(jià)和改進(jìn)意見。通過完成一個(gè)完整程序,經(jīng)歷策劃、設(shè)計(jì)、開發(fā)、測(cè)試、總結(jié)和驗(yàn)收各階段,達(dá)到:1) 鞏固和實(shí)踐計(jì)算機(jī)圖形學(xué)課程中的理論和算法;2) 學(xué)習(xí)表現(xiàn)計(jì)算機(jī)圖形學(xué)算法的技巧;3) 培養(yǎng)認(rèn)真學(xué)習(xí)、積極探索的精神??傮w要求:策劃、設(shè)計(jì)并實(shí)現(xiàn)一個(gè)能夠充分表現(xiàn)圖形學(xué)算法的演示系統(tǒng),界面要求美觀大方,能清楚地演示算法執(zhí)行的每一個(gè)步驟。開發(fā)環(huán)

5、境:Viusal C+ 6.0,VC2005或其他你認(rèn)為比較熟悉的環(huán)境。1.2 內(nèi)容與要求實(shí)驗(yàn)分為五項(xiàng)內(nèi)容。1.2.1 直線的生成內(nèi)容:用Bresenham算法畫直線要求:1) 鼠標(biāo)移動(dòng)時(shí),顯示鼠標(biāo)當(dāng)前位置2) 顯示判別式的計(jì)算過程和下一點(diǎn)的選擇策略3) 記錄生成點(diǎn)的坐標(biāo)4) 圖形生成過程可以重復(fù)進(jìn)行1.2.2 圓弧的生成內(nèi)容:用Bresenham算法畫圓要求:1) 鼠標(biāo)移動(dòng)時(shí),顯示鼠標(biāo)當(dāng)前位置2) 顯示判別式的計(jì)算過程和下一點(diǎn)的選擇策略3) 記錄生成點(diǎn)的坐標(biāo)4) 圖形生成過程可以重復(fù)進(jìn)行5) 橡皮筋技術(shù)實(shí)現(xiàn)1.2.3 線段裁剪內(nèi)容:用梁友棟-Barsky算法進(jìn)行線段裁剪要求:1) 對(duì)于線段裁

6、剪,線段被窗口的四條邊裁剪的過程要顯示出來2) 用橡皮筋的形式輸入剪裁線段1.2.4 多邊形裁剪內(nèi)容:用Sutherland-Hodgman算法進(jìn)行多邊形裁剪要求:1) 裁剪過程需先輸入一多邊形,然后用窗口四邊裁剪的過程中要顯示頂點(diǎn)增刪過程。2) 用橡皮筋的形式輸入剪裁線段1.2.5 綜合內(nèi)容:把前四次的實(shí)驗(yàn)內(nèi)容整合到一起要求:第2章 總體設(shè)計(jì)第2章 總體設(shè)計(jì)2.1 Bresenham算法畫直線2.1.1 Bresenham算法畫直線理論基礎(chǔ)計(jì)算機(jī)是如何畫直線的?簡(jiǎn)單來說,就是過各行各列像素中心構(gòu)造一組虛擬的網(wǎng)格線,按直線從起點(diǎn)到終點(diǎn)的順序計(jì)算各直線與歌垂直網(wǎng)格線的交點(diǎn),然后確定各列像素中與此

7、交點(diǎn)最近的像素。真實(shí)的直線是連續(xù)的,但我們的計(jì)算機(jī)顯示的精度有限,不可能真正顯示連續(xù)的直線,于是我們用一系列離散化后的點(diǎn)(像素)來近似表現(xiàn)這條直線。2.1.2 Bresenham算法畫直線原理接下來的問題就是如何盡可能高效地找到這些離散的點(diǎn),Bresenham直線算法就是一個(gè)非常不錯(cuò)的算法。Bresenham直線算法是用來描繪由兩點(diǎn)所決定的直線的算法,它會(huì)算出一條線段在 n 維光柵上最接近的點(diǎn)。這個(gè)算法只會(huì)用到較為快速的整數(shù)加法、減法和位元移位,常用于繪制電腦畫面中的直線。是計(jì)算機(jī)圖形學(xué)中最先發(fā)展出來的算法。這個(gè)算法的流程圖如下:可以看到,算法其實(shí)只考慮了斜率在 0 1 之間的直線,也就是與

8、x 軸夾角在 0 度到 45 度的直線。只要解決了這類直線的畫法,其它角度的直線的繪制全部可以通過簡(jiǎn)單的坐標(biāo)變換來實(shí)現(xiàn)。 2.2 Bresenham算法畫圓2.2.1 Bresenham算法畫圓理論基礎(chǔ)Bresenham畫圓算法與Bresenham 直線算法一樣,其基本的方法是利用判別變量來判斷選擇最近的像素點(diǎn),判別變量的數(shù)值僅僅用一些加、減和移位運(yùn)算就可以計(jì)算出來。為了簡(jiǎn)便起見,考慮一個(gè)圓心在坐標(biāo)原點(diǎn)的圓,而且只計(jì)算八分圓周上的點(diǎn),其余圓周上的點(diǎn)利用對(duì)稱性就可得到。為什么只計(jì)算八分圓周上的點(diǎn)就可以了呢?和上面的直線算法類似,圓也有一個(gè)“八對(duì)稱性”,如下圖所示。 顯然,我們只需要知道了圓上的一

9、個(gè)點(diǎn)的坐標(biāo) (x, y) ,利用八對(duì)稱性,我們馬上就能得到另外七個(gè)對(duì)稱點(diǎn)的坐標(biāo)。 2.2.2 Bresenham算法畫圓原理和直線算法類似,Bresenham畫圓算法也是用一系列離散的點(diǎn)來近似描述一個(gè)圓,如下圖。 Bresenham畫圓算法的流程圖如下。 可以看到,與畫線算法相比,畫圓的循環(huán)中用到了整數(shù)的乘法,相對(duì)復(fù)雜了一些。 2.3 梁友棟-Barsky算法進(jìn)行線段裁剪2.3.1梁友棟-Barsky算法進(jìn)行線段裁剪基本原理我們知道,一條兩端點(diǎn)為P1(x1,y1)、P2(x2,y2)的線段可以用參數(shù)方程形式表示:x= x1+ u·(x2-x1)= x1+ u·x,y= y1

10、+ u·(y2-y1)= y1+ u·y式中,x=x2-x1,y=y2-y1,參數(shù)u在01之間取值,P(x,y)代表了該線段上的一個(gè)點(diǎn),其值由參數(shù)u確定,由公式可知,當(dāng)u=0時(shí),該點(diǎn)為P1(x1,y1),當(dāng)u=1時(shí),該點(diǎn)為P2(x2,y2)。如果點(diǎn)P(x,y)位于由坐標(biāo)(xwmin,ywmin)和(xwmax,ywmax)所確定的窗口內(nèi),那么下式成立:xwminx1+ u·xxwmax,ywminy1+ u·yywmax這四個(gè)不等式可以表示為:u·pk qk , k=1,2,3,4其中,p、q定義為p1=-x, q1=x1-xwminp2= x

11、, q2=xwmax-x1p3=-y, q3=y1-ywminp4= y, q4=ywmax-y1可以知道:任何平行于窗口某邊界的直線,其pk=0,k值對(duì)應(yīng)于相應(yīng)的邊界(k=1,2,3,4對(duì)應(yīng)于左、右、下、上邊界)。如果還滿足qk<0,則線段完全在邊界外,應(yīng)舍棄該線段。如果pk=0并且qk0,則線段平行于窗口某邊界并在窗口內(nèi),見圖中所示。1、當(dāng)pk<0時(shí),線段從裁剪邊界延長(zhǎng)線的外部延伸到內(nèi)部;2、當(dāng)pk>0時(shí),線段從裁剪邊界延長(zhǎng)線的內(nèi)部延伸到外部;例如,當(dāng)x0時(shí),對(duì)于左邊界p1<0(p1=-x),線段從左邊界的外部到內(nèi)部;對(duì)于右邊界p2>0(p2=x),線段從右邊

12、界的內(nèi)部到外部。當(dāng)y<0時(shí),對(duì)于下邊界p3>0(p3=-y),線段從下邊界的內(nèi)部到外部;對(duì)于上邊界p4<0(p4=y),線段從上邊界的外部到內(nèi)部。當(dāng)pK0時(shí),可以計(jì)算出參數(shù)u的值,它對(duì)應(yīng)于無限延伸的直線與延伸的窗口邊界k的交點(diǎn),即:對(duì)于每條直線,可以計(jì)算出參數(shù)u1和u2,該值定義了位于窗口內(nèi)的線段部分:1、u1的值由線段從外到內(nèi)遇到的矩形邊界所決定(pk<0),對(duì)這些邊界計(jì)算rk=qk/pk,u1取0和各個(gè)r值之中的最大值。2、u2的值由線段從內(nèi)到外遇到的矩形邊界所決定(pk>0),對(duì)這些邊界計(jì)算rk=qk/pk,u2取0和各個(gè)r值之中的最小值。3、如果u1>

13、;u2,則線段完全落在裁剪窗口之外,應(yīng)當(dāng)被舍棄;否則,被裁剪線段的端點(diǎn)可以由u1和u2計(jì)算出來。2.4 Sutherland-Hodgman算法進(jìn)行多邊形裁剪2.4.1 SutherlandHodgman多邊形裁剪算法思想該算法的基本思想是每次用窗口的一條邊界及其延長(zhǎng)線來裁剪多邊形的各邊。多邊形通常由它的頂點(diǎn)序列來表示,經(jīng)過裁剪規(guī)則針對(duì)某條邊界裁剪后,結(jié)果形成新的頂點(diǎn)序列,又留待下條邊界進(jìn)行裁剪,直到窗口的所有邊界都裁剪完畢,算法形成最后的頂點(diǎn)序列,才是結(jié)果多邊形(它可能構(gòu)成一個(gè)或多個(gè)多邊形)。當(dāng)多邊形一個(gè)頂點(diǎn)Pi相對(duì)于窗口某條邊界及其延長(zhǎng)線進(jìn)行剪裁時(shí),不外乎下列四種情況(即裁剪規(guī)則):1、頂

14、點(diǎn)Pi在內(nèi)側(cè),前一頂點(diǎn)Pi-1也在內(nèi)側(cè),則將Pi納入新的頂點(diǎn)序列;2、頂點(diǎn)Pi在內(nèi)側(cè),前一頂點(diǎn)Pi-1在外側(cè),則先求交點(diǎn)Q,再將Q、Pi依次納入新的頂點(diǎn)序列;3、頂點(diǎn)Pi在外側(cè),前一頂點(diǎn)Pi-1在內(nèi)側(cè),則先求交點(diǎn)Q,再將Q納入新的頂點(diǎn)序列;4、頂點(diǎn)Pi與前一頂點(diǎn)Pi-1均在外側(cè),則頂點(diǎn)序列中不增加新的頂點(diǎn)。2.4.2 點(diǎn)在邊界內(nèi)側(cè)的判斷方法為了判斷點(diǎn)是否在邊界內(nèi)側(cè)可用坐標(biāo)比較法和更通用的向量叉積符號(hào)判別法。1、坐標(biāo)比較法將點(diǎn)的某個(gè)方向分量與邊界進(jìn)行比較。例如,判斷某點(diǎn)是否在下邊界內(nèi)側(cè),用條件判別式: if(pi1>=ymin) 即可。2、向量叉積法為簡(jiǎn)單計(jì),測(cè)試點(diǎn)表示為P點(diǎn)。假設(shè)窗口邊界

15、方向?yàn)轫槙r(shí)針,如圖中所示,對(duì)于其中任一邊界向量,從向量起點(diǎn)A向終點(diǎn)B看過去:如果被測(cè)試點(diǎn)P在該邊界線右邊(即內(nèi)側(cè)),AB×AP的方向與X-Y平面垂直并指向屏幕里面,即右手坐標(biāo)系中Z軸的負(fù)方向。反過來,如果P在該邊界線的左邊(即外側(cè)),這時(shí)AB×AP的方向與X-Y平面垂直并指向屏幕外面,即右手坐標(biāo)系中Z軸的正方向。設(shè):點(diǎn)P(x,y)、點(diǎn)A(xA,yA)、點(diǎn)B(xB,yB),向量AB=(xB-xA),(yB-yA),向量AP=(x-xA),(y-yA),那么AB×AP的方向可由下式的符號(hào)來確定:V=(xB-xA)*(y-yA)- (x-xA)*(yB-yA) 因此,當(dāng)

16、V0時(shí),P在邊界線內(nèi)側(cè);而V>0時(shí),P在邊界線外側(cè)。2.4.4 Sutherland-Hodgeman多邊形裁剪算法特點(diǎn)SutherlandHodgeman多邊形裁剪算法具有一般性,被裁剪多邊形可以是任意凸多邊形或凹多邊形,裁剪窗口不局限于矩形,可以是任意凸多邊形。上面的算法是多邊形相對(duì)窗口的一條邊界進(jìn)行裁剪的實(shí)現(xiàn),對(duì)于窗口的每一條邊界依次調(diào)用該算法程序,并將前一次裁剪的結(jié)果多邊形作為下一次裁剪時(shí)的被裁剪多邊形,即可得到完整的多邊形裁剪程序。第3章 詳細(xì)設(shè)計(jì)第3章 詳細(xì)設(shè)計(jì)3.1 Bresenham算法畫直線3.1.1 Bresenham 算法畫線算法具體實(shí)現(xiàn)過程1、畫點(diǎn)(x1, y2)

17、; dx=x2-x1; dy=y2-y1;計(jì)算誤差初值P1=2dy-dx; i=1;2、求直線的下一點(diǎn)位置:xi+1=xi+1;if Pi>0 則yi+1=yi+1;否則yi+1=yi;3、畫點(diǎn)(xi+1, yi-1);4、求下一個(gè)誤差Pi+1;if Pi>0 則Pi+1=Pi+2dy-2dx;否則Pi+1=Pi+2dy;5、i=i+1; if i<dx+1則轉(zhuǎn)2;否則end。由上述算法思想編制算法程序。這個(gè)程序適用于所有8個(gè)方向的直線的生成。程序畫出一條端點(diǎn)為(x1, y1)和(x2, y2)的直線。其中變量的含義是:P是誤差;const1和const2,是誤差的逐點(diǎn)變化量

18、;inc是y的單位遞變量,值為1或-1;tmp是用作象限變換時(shí)的臨時(shí)變量。程序以判斷|dx|>|dy|為分支,并分別將2a, 3a象限的直線和3b, 4b象限的直線變換到1a, 4a和2b, 1b方向去,以求得程序處理的簡(jiǎn)潔。3.2 Bresenham算法畫圓3.2.1 Bresenham 算法畫圓核心代碼根據(jù)Bresenham算法思想編寫程序代碼,在Bresenham算法畫線的基礎(chǔ)上畫圓,程序代碼如下:void BresenhamCircle(int x0,int y0,int R)/,int color) int x,y,d; x=0;y=R; d=3-2*R;while(x<

19、y) glColor3f (0.0f, 1.0f, 0.0f); putpixel(x0+x,y0+y); putpixel(x0+x,y0-y); putpixel(x0-x,y0+y); putpixel(x0-x,y0-y); putpixel(x0+y,y0+x); putpixel(x0+y,y0-x); putpixel(x0-y,y0+x); putpixel(x0-y,y0-x); if(d<0) d=d+4*x+6; elsed=d+4*(x-y)+10;y=y-1; x+; 3.3 梁友棟-Barsky算法進(jìn)行線段裁剪3.3.1梁友棟-Barsky算法推導(dǎo)過程情形一&

20、#160;  pk=0p1p20若q1<0或q2<0,則可刪除直線段 若q1>=0且q2>=0,則進(jìn)一步判斷      u=qk/pk(k=3,4) 令  u1=max(0,u|pk<0)     u2=min(1,u|pk>0)若u1>u2,則可刪除直線段若u1<=u2,將u1,u2代入直線方程,得到直線段的兩個(gè)可見端點(diǎn)。p3p40 若q3<0或q4<0,則可刪除直線段若q3>=0且q4>=0,則進(jìn)一步判斷

21、60;    u=qk/pk(k=1,2)令  u1=max(0,u|pk<0)     u2=min(1,u|pk>0)若u1>u2,則可刪除直線段若u1<=u2,將u1,u2代入直線方程,得到直線段的兩個(gè)可見端點(diǎn)。情形二   pk不為0u=qk/pk(k=1,2,3,4)令 u1=max(0,u|pk<0,u|pk<0)u2=min(1,u|pk>0, u|pk>0)若u1>u2,則可刪除直線段若u1<=u2,將u1,u2

22、代入直線方程,得到直線段的兩個(gè)可見端點(diǎn)。3.3.2梁友棟-Barsky算法進(jìn)行線段裁剪的步驟(1) 輸入直線段的兩端點(diǎn)坐標(biāo)以及窗口的四條邊界坐標(biāo)。(2) 若x=0,則p1=p2=0。進(jìn)一步判斷是否滿足q1<0或q2<0,若滿足,則該直線段不在窗口內(nèi),轉(zhuǎn)(7)。否則,滿足q1>0且q2>0,則進(jìn)一步計(jì)算u1和u2。轉(zhuǎn)(5)。 (3) 若y=0,則p3=p4=0。進(jìn)一步判斷是否滿足q3<0或q4<0,若滿足,則該直線段不在窗口內(nèi),轉(zhuǎn)(7)。否則,滿足q1>0且q2>0,則進(jìn)一步計(jì)算u1和u2。轉(zhuǎn)(5)。(4) 若上述兩條均不滿足,則有pk0(k=1,

23、2,3,4)。此時(shí)計(jì)算u1和u2。(5) 求得u1和u2后,進(jìn)行判斷:若u1>u2,則直線段在窗口外,轉(zhuǎn)(7)。若u1<u2,利用直線的參數(shù)方程求得直線段在窗口內(nèi)的兩端點(diǎn)坐標(biāo)。(6) 利用直線的掃描轉(zhuǎn)換算法繪制在窗口內(nèi)的直線段。(7) 算法結(jié)束。3.4 Sutherland-Hodgman算法進(jìn)行多邊形裁剪3.4.1 SutherlandHodgman多邊形裁剪算法步驟考慮多邊形相對(duì)于一條邊界及其延長(zhǎng)線進(jìn)行裁剪的算法:1 從主函數(shù)得到待裁剪多邊形的頂點(diǎn)序列P2、頂點(diǎn)序列數(shù)n、窗口一條邊界參數(shù)xl(假如為矩形窗口的左邊界);2 賦初值:將頂點(diǎn)序列中的最后一個(gè)頂點(diǎn)賦給前一頂點(diǎn)S;設(shè)置初

24、始標(biāo)志flag:if(S在邊界內(nèi)側(cè))flag=0;else flag=1;設(shè)新的頂點(diǎn)序列數(shù)j=0;3 對(duì)多邊形各頂點(diǎn)進(jìn)行裁剪規(guī)則處理,結(jié)果放入新的多邊形頂點(diǎn)序列Q2中: for(對(duì)第一個(gè)頂點(diǎn)直到最后一個(gè)頂點(diǎn),逐一處理)if(Pi在邊界內(nèi)側(cè)) if(flag!=0) flag=0;求交點(diǎn)并放入新的多邊形頂點(diǎn)序列Qj中; j+; 將當(dāng)前頂點(diǎn)放入新的多邊形頂點(diǎn)序列Qj中:Qj=Pi; j+; Elseif(flag=0) flag=1;求交點(diǎn)并放入新的多邊形頂點(diǎn)序列Qj中; j+; 將當(dāng)前頂點(diǎn)賦給S:S=Pi; 4 做返回準(zhǔn)備:5 將新的多邊形頂點(diǎn)序列Q又逐一放回原多邊形頂點(diǎn)序列P中:P=Q;6 將

25、新的多邊形頂點(diǎn)數(shù)j放回原多邊形頂點(diǎn)數(shù)n中:n=j;3.5將畫線、畫圓、線段裁剪和多邊形裁剪綜合在顯示函數(shù)中將各個(gè)算法添加到一個(gè)程序中,使用右鍵菜單的特殊功能實(shí)現(xiàn)畫線、畫圓、線段裁剪和多邊形裁剪,主要是processMenuEvents函數(shù)和createGLUTMenus函數(shù)的編寫。這兩個(gè)函數(shù)的程序代碼如下:void processMenuEvents(int option) switch (option) case 1:select = 1; glutPostRedisplay(); break;case 2: select = 2; glutPostRedisplay(); break;ca

26、se 3:select = 3; glutPostRedisplay(); break;case 4:select =4; glutPostRedisplay(); break;default: break;void createGLUTMenus() int menu;menu = glutCreateMenu(processMenuEvents);glutAddMenuEntry("Bresenham Line",1);glutAddMenuEntry("Bresenham Circle",2); glutAddMenuEntry("Lia

27、ng-Barsky Cut",3);glutAddMenuEntry("Sutherland-Hodgman Cut",4);glutAttachMenu(GLUT_RIGHT_BUTTON); void Display() glClear(GL_COLOR_BUFFER_BIT); Wangge();glColor3f (0.0f, 0.0f, 0.0f); glRectf(rect.xmin,rect.ymin,rect.xmax,rect.ymax);if(select = 1) myDisplay_Line();else if(select=2) myDisplay_Circle();

溫馨提示

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