![計(jì)算機(jī)圖形學(xué)各種算法的作業(yè)(偏于理論)_第1頁(yè)](http://file4.renrendoc.com/view/c8785818c149af2c7075bab414d317fb/c8785818c149af2c7075bab414d317fb1.gif)
![計(jì)算機(jī)圖形學(xué)各種算法的作業(yè)(偏于理論)_第2頁(yè)](http://file4.renrendoc.com/view/c8785818c149af2c7075bab414d317fb/c8785818c149af2c7075bab414d317fb2.gif)
![計(jì)算機(jī)圖形學(xué)各種算法的作業(yè)(偏于理論)_第3頁(yè)](http://file4.renrendoc.com/view/c8785818c149af2c7075bab414d317fb/c8785818c149af2c7075bab414d317fb3.gif)
![計(jì)算機(jī)圖形學(xué)各種算法的作業(yè)(偏于理論)_第4頁(yè)](http://file4.renrendoc.com/view/c8785818c149af2c7075bab414d317fb/c8785818c149af2c7075bab414d317fb4.gif)
![計(jì)算機(jī)圖形學(xué)各種算法的作業(yè)(偏于理論)_第5頁(yè)](http://file4.renrendoc.com/view/c8785818c149af2c7075bab414d317fb/c8785818c149af2c7075bab414d317fb5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)圖形學(xué)算法基礎(chǔ)作業(yè)
姓名:________LH__________
學(xué)院:理學(xué)院___________
專業(yè):計(jì)算數(shù)學(xué)
時(shí)間:2010-12-31
LH的計(jì)算機(jī)圖形學(xué)作業(yè)
目錄
1直線段生成算法綜述....................................................1
1.1生成直線的DDA方法...........................................1
1.1.1DDA算法基本原理..........................................1
1.1.2DDA算法實(shí)現(xiàn)步驟..........................................1
1.1.3DDA算法程序(或偽程序)描述..........................2
1.1.1DDA算法流程圖............................................2
1.2生成直線的Bresenham算法...................................3
1.2.1Bresenham算法基本原理..................................3
1.2.2Bresenham算法實(shí)現(xiàn)步驟..................................5
1.2.3Bresenham算法程序(或偽程序)描述..................5
1.2.4Bresenham算法流程圖.....................................5
1.3中點(diǎn)畫線算法....................................................2
1.3.1中點(diǎn)畫線算法基本原理....................................2
1.3.2中點(diǎn)面線算法實(shí)現(xiàn)步驟....................................3
1.3.3中點(diǎn)畫線算法程序(或偽程序)描述.....................3
1.3.4中點(diǎn)畫線算法流程圖......................................3
1.4生成直線算法的進(jìn)一步改進(jìn)...................................5
1.5各種直線生成算法的優(yōu)缺點(diǎn)對(duì)比分析.......................6
1.6直線生成算法的發(fā)展趨勢(shì)......................................7
2橢圓的Bresenham生成算法...........................................7
LH的計(jì)算機(jī)圖形學(xué)作業(yè)
2.1橢圓曲率分析....................................................7
2.2橢圓方程分析....................................................7
2.3橢圓生成算法...................................................9
2.3.1算法實(shí)現(xiàn)過(guò)程..............................................9
2.3.2算法流程圖...............................................10
2.3.3算法程序描述.............................................11
3直線段裁剪算法綜述..................................................11
3.1Sutherland-Cohen裁剪算法................................11
3.1.1Sutherland-Cohen算法基本原理.......................11
3.1.2Sutherland-Cohen算法實(shí)現(xiàn)步驟.......................11
3.1.3算法程序(或偽程序)描述............................12
3.1.4算法流程圖...............................................12
3.2中點(diǎn)分割裁剪算法............................................12
3.2.1中點(diǎn)分割算法基本原理與實(shí)現(xiàn)步驟......................12
3.2.2算法程序(或偽程序)描述..............................13
3.2.3算法流程圖................................................13
3.3梁友棟一Barskey算法........................................14
3.3.1梁友棟一Barskey算法基本原理與實(shí)現(xiàn)步驟............14
3.3.2算法程序(或偽程序)描述..............................15
3.3.3算法流程圖................................................15
3.4快速算法........................................................15
3.5其余一些改進(jìn)的直線裁剪算法..............................16
II
LH的計(jì)算機(jī)圖形學(xué)作業(yè)
3.6各種直線裁剪算法的優(yōu)缺點(diǎn)對(duì)比分析..................16
3.7直線裁剪算法的發(fā)展趨勢(shì)................................16
4圖形求交技術(shù)....................................................16
4.1求交點(diǎn)算法.................................................16
4.1.1線與線的交點(diǎn)的求法.................................17
4.2.2線與面的交點(diǎn)的求法.................................18
4.2求交線算法................................................19
4.3包含判定算法.............................................21
4.4重疊判定算法.............................................26
4.5凸包計(jì)算..................................................26
5自由曲線曲面造型技術(shù)...........................................28
5.1Bezier曲線和曲面.......................................28
5.1.1Bezier曲線..........................................28
5.1.2Bezier曲面..........................................31
5.2B樣條曲線與曲面........................................32
5.2.1B樣條的遞推定義和性質(zhì).............................32
5.2.2B樣條曲線...........................................34
5.2.5B樣條曲面............................................36
5.3NURBS曲線與曲面........................................37
5.3.1NURBS曲線............................................37
5.3.2非均勻有理B樣條(NURBS)曲面.....................39
5.4Coons曲面.................................................40
in
LH的計(jì)算機(jī)圖形學(xué)作業(yè)
5.4.1基本概念..............................................40
5.4.2雙線性Coons曲面....................................41
5.4.3雙三次Coons曲面....................................42
6CAGD中有關(guān)曲線曲面C“、G”拼接技術(shù)...........................44
6.1基本原理...................................................44
6.2Bezier曲線的C。、G。、CPGPC2>G2的拼接條件........44
6.3Bezier曲面的C。、G。、CpG1的拼接條件..................46
7圖形變換技術(shù).....................................................48
7.1二維圖形幾何變換.........................................49
7.1.1平移(Translation)..................................49
7.1.2旋轉(zhuǎn)(Rotation)......................................49
7.1.3變比(scaling).......................................50
7.2三維圖形幾何變換.........................................51
7.2.1平移..................................................51
7.2.2旋轉(zhuǎn)..................................................51
7.2.3變比..................................................54
7.3參數(shù)圖形幾何變換.........................................54
7.3.1圓錐曲線的幾何變換..................................54
7.3.2參數(shù)曲線、曲面的幾何變換...........................55
7.4投影變換...................................................58
7.4.1平行投影(parallelprojection)....................58
7.4.2透視投影(perspectiveprojection).................60
IV
LH的計(jì)算機(jī)圖形學(xué)作業(yè)
8圖形消隱算法.................................................61
8.1掃描線Z-buffer算法..................................61
8.2區(qū)域子分割算法........................................61
8.3光線投射算法..........................................62
8.4平面公式法.............................................62
8.5徑向預(yù)排序法..........................................63
8.6徑向排序法.............................................63
8.7隔離平面法.............................................63
8.8深度排序法.............................................63
8.9光線跟蹤法.............................................63
8.10Z緩沖區(qū)法............................................64
8.11極值檢測(cè)法............................................64
8.12深度分類方法.........................................64
8.13八叉樹(shù)方法............................................65
9圖形學(xué)若干基本算法的實(shí)現(xiàn)研究.............................65
參考文獻(xiàn)........................................................68
附錄.............................................................68
V
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
圖形學(xué)算法基礎(chǔ)作業(yè)
1直線段生成算法綜述
1.1生成直線的DDA方法
1.1.1DDA算法基本原理
DDA是數(shù)字微分分析式(DigitalDifferentialAnalyzer)的縮
寫。設(shè)直線之起點(diǎn)為(x”y),終點(diǎn)為(X242),則斜率k為:
x2-Xjdx
直線中的每一點(diǎn)坐標(biāo)都可以由前一點(diǎn)坐標(biāo)變化一個(gè)增量(D、,Dy)而
得到,即表示為遞歸式:
Xj+l=Xj+Dx
Yi+1=%+D、.
并有關(guān)系:D=mxD
yA
遞歸式的初值為直線的起點(diǎn)(X1,%),這樣,就可以用加法來(lái)生成一條直
線。
1.1.2DDA算法實(shí)現(xiàn)步驟
具體方法是:
按照直線從(x“%)到(X2,y2)的方向不同,分為8個(gè)象限(見(jiàn)圖1.1)。
對(duì)于方向在第la象限內(nèi)的直線而言,Dx=l,Dy=m。對(duì)于方向在第1b
象限內(nèi)的直線而言,取值Dy=1,D'=l/m。各象限中直線生成時(shí)D,,D,的
取值列在表1T之中。
圖1.1直線方向的8個(gè)象限圖
1
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
表1-1各象限中直線生成時(shí)D、,D,的取值列
象限|dx|>|dy|9D、D,
laT1m
1bF1/m1
2aT-1m
2bF-1/m1
3aT-1-m
3bF-1/m-1
4aT1-m
4bF1/m-1
研究表中的數(shù)據(jù),可以發(fā)現(xiàn)兩個(gè)規(guī)律:
1、當(dāng)|dx|>|dy|時(shí)|DX|=1,|DJ=HI;否則:Dx=l/m,|Dy|=l
2、Dx,Dy的符號(hào)與dx,dy的符號(hào)相同。這兩條規(guī)律可以導(dǎo)致程序的
簡(jiǎn)化。由上述方法寫成的程序如附錄1所示。其中steps變量的設(shè)置,
以及D*=dx/steps;Dy=dy/steps等語(yǔ)句,正是利用了上述兩條規(guī)律,使得程
序變得簡(jiǎn)練。
使用DDA算法,每生成一條直線做兩次除法,每畫線中一點(diǎn)做兩次
加法。因此,用DDA法生成直線的速度是相當(dāng)快的。
1.1.3DDA算法程序(或偽程序)描述
具體程序見(jiàn)附錄lo
1.1.4DDA算法流程圖
(略)
1.2中點(diǎn)畫線算法
1.2.1中點(diǎn)畫線算法基本原理
假定直線斜率k在。1之間,當(dāng)前象素點(diǎn)為儀酎丫。),則下一
個(gè)象素點(diǎn)有兩種可選擇點(diǎn)P1(Xp+l*)或P2(xp+l,yp+l)o若R與P2的中
點(diǎn)(Xp+l,yp+0.5)稱為M,Q為理想直線與x=Xp+l垂線的交點(diǎn)。當(dāng)M
2
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
在Q的下方時(shí),則取P2應(yīng)為下一個(gè)象素點(diǎn);當(dāng)M在Q的上方時(shí),
則取R為下一個(gè)象素點(diǎn)。這就是中點(diǎn)畫線法的基本原理。
1.2.2中點(diǎn)畫線算法實(shí)現(xiàn)步驟
下面討論中點(diǎn)畫線法的實(shí)現(xiàn)。過(guò)點(diǎn)(x°,yo)、&,yj的直線段
L的方程式為F(x,y)=ax+by+c=0,其中a=y0-y|5b=x0-x,,
c=Xoyi-X]yo,要判斷中點(diǎn)M在Q點(diǎn)的上方還是下方,只要把M
代入F(x,y),并判斷它的符號(hào)即可。為此,我們構(gòu)造判別式:
d=F(M)=F(xp+l,yp+0.5)=a(xp+1)+b(yp+0.5)+c
當(dāng)d<0時(shí),M在L(Q點(diǎn))下方,取P?為下一個(gè)象素;
當(dāng)d>0時(shí),M在L(Q點(diǎn))上方,取耳為下一個(gè)象素;
當(dāng)d=0時(shí),選R或P2均可,約定取R為下一個(gè)象素。
注意到d是x”yp的線性函數(shù),可采用增量計(jì)算,提高運(yùn)算效率。
若當(dāng)前象素處于d>0情況,則取正右方象素P"Xp+l,yp),要判下一
個(gè)象素位置,應(yīng)計(jì)算4=F(xp+2,yp+0.5)=a(xp+2)+b(yp+0.5)+c=d+a,
增量為a。
若d<0時(shí),則取右上方象素P2(Xp+l*+l)。要判斷再下一象
素,則要計(jì)算d2=F(xp+2,yp+1.5)=a(xp+2)+b(yp+1.5)+c=d+a+b,
增量為a+bo畫線從(x0,y0)開(kāi)始,d的初值
d0=F(x0+l,y0+0.5)=F(x0,y0)+a+0.5b,因F(xo,yo)=O,所以d0=a+0.5b□
由于我們使用的只是d的符號(hào),而且d的增量都是整數(shù),只
是初始值包含小數(shù)。因此,我們可以用2d代替d來(lái)擺脫小數(shù),
寫出僅包含整數(shù)運(yùn)算的算法程序。
1.2.3中點(diǎn)畫線算法程序(或偽程序)描述
具體程序見(jiàn)附錄2
1.2.4中點(diǎn)畫線算法流程圖
(略)
1.3生成直線的Bresenham算法
1.3.1Bresenham算法基本原理
本算法由Bresenham在1965年提出。設(shè)直線從起點(diǎn)(x“y1)到終點(diǎn)
(x2,y2)0直線可表示為方程y=kx+b。其中
3
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
b=yj-k-x,
k=y^-y._空
X2-x,dX
我們討論先將直線方向限于la象限(圖1.1)在這種情況下,當(dāng)
直線光柵化時(shí),x每次都增加1個(gè)單元,即x,+l=Xi+l。而y的相應(yīng)增
加應(yīng)當(dāng)小于1。為了光柵化,y+1只可能選擇如圖1.2兩種位置之一。
圖1.2yi+1的位置選擇
圖1.2中yi+1的位置選擇y「l=yi或者Yi+1=Yj+1
選擇的原則是看精確值y與y及y+1的距離dl及d2的大小而定。
計(jì)算式為:
y=m(Xj+l)+b(1.2.1)
dl=y-Yi(1.2.2)
d2=yj+l-y(1.2.3)
如果dl-d2>0,則y+l=yi+l,否則%+1=丫1因此算法的關(guān)鍵在于簡(jiǎn)便
地求出dl-d2的符號(hào)。將式(1.2.1)、(1.2.2)、(1.2.3)代入dl-d2,
得
dl-d2=2y-2y「l=2—(xj+l)-2yi+2b-l
用dx乘等式兩邊,并以R=dx(dl-d2)代入上述等式,得
R=2Xjdy-2Yjdx+2dy+dx(2b-1)(1.2.4)
dl-d2是我們用以判斷符號(hào)的誤差。由于在la象限,dx總大于0,所以
R仍舊可以用作判斷符號(hào)的誤差。耳+1為:
R+l=P,+2dy-2dxg+1-yj(1.2.5)
誤差的初值Pl,可將xl,yl,和b代入式(2.1.4)中的xi,yi而得至h
4
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
R=2dy-dx
1.3.2Bresenham算法實(shí)現(xiàn)步驟
綜述上面1.3.1的推導(dǎo),第la象限內(nèi)的直線Bresenham算法思想
如下:
1>畫點(diǎn)(xl,y2);dx=x2-xl;dy=y2-yl;
計(jì)算誤差初值Pl=2dy-dx;i=l;
2、求直線的下一點(diǎn)位置:
xi+l=xi+l;
ifPi>0則yi+l=yi+l;
否則yi+l=yi;
3、畫點(diǎn)(xi+1,yi-1);
4、求下一個(gè)誤差Pi+1;
ifPi>0則Pi+l=Pi+2dy-2dx;
否則Pi+l=Pi+2dy;
5、i=i+l;ifi<dx+l則轉(zhuǎn)2;否則end。
1.3.3Bresenham算法程序(或偽程序)描述
由上述算法思想編制的程序見(jiàn)附錄3。這個(gè)程序適用于所有8個(gè)方
向的直線(圖1.1)的生成。程序用色彩C畫出一條端點(diǎn)為(x”力)和
(*2,丫2)的直線。其中變量的含義是:P是誤差;constl和const2,是
誤差的逐點(diǎn)變化量;inc是y的單位遞變量,值為1或-1;tmp是用作
象限變換時(shí)的臨時(shí)變量。程序以判斷|dx|>|dy|為分支,并分別將2a,3a
象限的直線和3b,4b象限的直線變換到la,4a和2b,1b方向去,以求得
程序處理的簡(jiǎn)潔。
1.3.4Bresenham算法流程圖
(略)
1.4生成直線算法的進(jìn)一步改進(jìn)
除過(guò)前面所講到的3種基本直線生成算法外,還有一些其它的方
法,由于過(guò)多,這里僅列舉兒種如下:
(1)二步法。雖然Bresenham直線生成算法是一效率很高的算法,
但是人們?nèi)栽趯ふ腋行5乃惴ā?987年又有人提出了一種二步法。
5
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
即每循環(huán)一次不是繪制一個(gè)像素,而是繪制兩個(gè)像素,這樣無(wú)疑可把生
成直線的速度提高一倍。
(2)改進(jìn)的Bresenham算法。對(duì)于對(duì)于傳統(tǒng)的直線生成算法,人
們往往把注意力集中在算法本身,卻忽略了算法之外的一些有用信息:
畫線之前,從起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo),我們就可以獲知該線段的斜率,由
此可進(jìn)一步得出在主軸方向連續(xù)走1個(gè)步長(zhǎng),在副軸方向才走一個(gè)坐標(biāo)
單位,這就是本算法提高Bresenham算法執(zhí)行效率的一個(gè)方面。提高算
法效率的第二個(gè)方面是利用線段本身的對(duì)稱性,則新算法所產(chǎn)生的起點(diǎn)
一側(cè)的半條線段與用Bresenham算法產(chǎn)生的相同。至于終點(diǎn)一側(cè)的半條
線段,可以看成以終點(diǎn)為起點(diǎn)線段的生成。
算法實(shí)現(xiàn):
特殊地,對(duì)于水平線(Ay=O),垂直線(Ax=O)和對(duì)角線(岡=卜|),
它們都可直接裝人幀緩沖器,而無(wú)需進(jìn)行畫線算法處理。
從以上的描述可以實(shí)現(xiàn)優(yōu)于Bresenham的直線生成算法。其中待生
成直線的已知數(shù)據(jù)為:(x“y)為線段起點(diǎn)的橫、縱坐標(biāo);(X2,y2)為線段終
點(diǎn)的橫、縱坐標(biāo)。
算法的輸人數(shù)據(jù)為:(X|,yj,(x2,y2)o
(3)基于類最佳逼近的散步直線生成算法。一種新的直線逼近方
法一類最佳逼近,基于這種逼近方法,斜率ke[0,0.5)的直線和斜率為l-k
的直線具有某種互補(bǔ)性質(zhì)。利用該性質(zhì),設(shè)計(jì)出種新的三步直線方法,
該算法揭示了直線計(jì)算的互補(bǔ)性,理論簡(jiǎn)單,精度達(dá)到最好。這種算法改
善了Bresenham算法和雙步算法的計(jì)算效率。該算法對(duì)于硬件實(shí)現(xiàn)將更
有益處。
除此之外直線生成算法還有對(duì)稱掃描四步增量畫線算法、基于
Bresenham的高效直線生成集成算法、基于Bresenham算法的四步畫直
線算法、基于直線特性的直線生成集成算法、基于自適應(yīng)步長(zhǎng)的直線生
成算法、基于等分像素點(diǎn)的直線生成算法、6步直線生成算法、基于對(duì)
角線行程的直線生成算法等等。
1.5各種直線生成算法的優(yōu)缺點(diǎn)對(duì)比分析
DDA算法的優(yōu)點(diǎn)是:繪制實(shí)數(shù)直線效果好,誤差?。蝗秉c(diǎn)是:實(shí)
現(xiàn)較復(fù)雜,不利于硬件實(shí)現(xiàn)。因?yàn)樵撍惴ㄉ婕暗綄?shí)數(shù)乘除法運(yùn)算,y與
k必須用浮點(diǎn)數(shù)表示,而且每一步都要對(duì)y四舍五入后取整。
6
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
中點(diǎn)畫線算法優(yōu)點(diǎn)是:只有整數(shù)運(yùn)算,不含乘除法;可用硬件實(shí)現(xiàn)。
Bresenham算法的優(yōu)點(diǎn)是:
1、不必計(jì)算直線之斜率,因此不做除法;
2、不用浮點(diǎn)數(shù),只用整數(shù);
3、只做整數(shù)加減法和乘2運(yùn)算,而乘2運(yùn)算可以用硬件移位實(shí)現(xiàn)。
4、Bresenham算法速度很快,并適于用硬件實(shí)現(xiàn)。
1.6直線生成算法的發(fā)展趨勢(shì)
(略)
2橢圓的Bresenham生成算法
2.1橢圓曲率分析
橢圓r{acost,bsmt}C。為沿1軸方向的長(zhǎng)半軸長(zhǎng)度,〃為沿丁軸
方向的短半軸長(zhǎng)度,且。〉匕),曲率為/=H/(a2sin21+02cos2/)3/2,在
第一象限fe(0//2),將勺對(duì),求導(dǎo)數(shù),有M,/dr<0,即曲率為減函數(shù),
在點(diǎn)3,0)(即,=0)處的曲率%,=o)=。//;在點(diǎn)(0力)(即"乃/2)處的
曲率半徑為。的圓的曲率為以//,半徑為匕的圓的曲
率為兩圓的曲率關(guān)系為匕/〃2>。//(“〉0),則兩圓的曲率在橢
12
圓上點(diǎn)(4,0)與(0/)的曲率之間,四者的關(guān)系為:alb>\/b>\/a>b/a0
2.2橢圓方程分析
根據(jù)橢圓及圓的曲率分析,橢圓弧分別由半徑為以和〃的圓弧逼近
生成。為了更準(zhǔn)確的由圓弧生成橢圓弧,在橢圓弧上確定一點(diǎn)P。,將橢
圓弧分成曲率較小和曲率較大的兩段,橢圓方程為:
F(x,y)=—+a2y2-a2b2=0。
其中4為沿1軸方向的長(zhǎng)半軸長(zhǎng)度,b為沿y軸方向的短半軸長(zhǎng)
度,且a>匕>0。由于橢圓的對(duì)稱性,這里只要討論第一象限橢圓弧
7
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
的生成。將橢圓弧分為上下兩部分,以弧上曲率為-1的點(diǎn)(即法向量
兩個(gè)分量相等的點(diǎn))作為分界。該橢圓上一點(diǎn)(x,y)處的法向量為:
、3F.8F22
Nam=菽"百j=2bxi+2ay]
結(jié)合橢圓方程可計(jì)算出分界點(diǎn)Po的坐標(biāo)為:
(a2/yla2+b2,b2/yJa2+/72)。
以P0點(diǎn)為分界點(diǎn),將第一象限的圓弧分成曲率較大和較小的兩段
弧。如圖2.1所示,ye廳/J"f/向的橢圓弧,與半徑為。的圓在點(diǎn)
22222
T40,a)到T2(a/-Ja+b,ab/y/a+b)的圓弧上對(duì)應(yīng)。在橢圓弧上任取一
點(diǎn)Qi,過(guò)Q/乍垂直線與圓交于R點(diǎn),連接圓心與R點(diǎn),與Y軸的夾角為
。。則
橢圓的參數(shù)方程可表示為:
%=asin。,
y,-0cos9.
圓的參數(shù)方程可表示為:
x=asinO,
<
y=QCOSO.
對(duì)于同一0,橢圓弧上存在唯一的點(diǎn)與圓弧上的點(diǎn)對(duì)應(yīng),并且對(duì)應(yīng)
點(diǎn)的坐標(biāo)存在如下關(guān)系:
X=X,
y'=(b/a)y.
圖2.1圓弧與橢圓弧對(duì)應(yīng)點(diǎn)之-圖2.2圓弧與橢圓弧對(duì)應(yīng)點(diǎn)之一
8
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
2
如圖2.2所示,半徑為匕的圓上,從點(diǎn)T3(fl/4+/,從/行+/)至
143,0)的圓弧與橢圓上ye(0,Z?2/y/a2+b2)的橢圓弧對(duì)應(yīng),在橢圓弧上任
取一點(diǎn)Q?,過(guò)Q2作垂直線與圓交于P2點(diǎn),連接圓心與P2點(diǎn),與Y軸的夾
角為。。則
橢圓的參數(shù)方程可表示為:
X=asin?,
*
y'=bcosQ.
圓的參數(shù)方程可表示為:
x=/?sin0,
*
y-bcosQ.
對(duì)于同一0,橢圓弧上存在唯一的點(diǎn)與圓弧上的點(diǎn)對(duì)應(yīng),并且對(duì)應(yīng)
點(diǎn)的坐標(biāo)存在如下關(guān)系:
Ix=(a/b)%,
[y=y.
2.3橢圓生成算法
當(dāng)圓弧上的點(diǎn)從30)沿著圖2.1、圖2.2的對(duì)應(yīng)關(guān)系方向變化到
(。,0)時(shí),橢圓弧上相對(duì)應(yīng)的點(diǎn)也從該方向變化到(a,0)o
2.3.1算法實(shí)現(xiàn)過(guò)程
1、計(jì)算分界點(diǎn)息制心)。
2、用Bresenham算法生成兩段圓弧和、C20G半徑為a,
xe[0,a2/yla2+b2];C2半徑為。,ye[0,b2/y/a2+h2]o
3、將圓弧G進(jìn)行比例變換:%方向的比例系數(shù)為1,y方向的比
例系數(shù)為匕/〃;將圓弧C2進(jìn)行比例變換:%方向的比例系數(shù)為。/匕,
y方向的比例系數(shù)為lo
9
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
4、如圖2.3,已知橢圓上在第一象限的點(diǎn)Q(x,y),則橢圓上另外
三個(gè)象限與Q(x,y)點(diǎn)對(duì)稱的點(diǎn)分別為(-x,y),(-x,-y),(x,-y),因此只
要畫出在第一象限的圖形,即可得到整個(gè)橢圓的圖形。
至(~x.壬y)
(-X,~y)
圖2.3橢圓對(duì)稱性
2.3.2算法流程圖
橢圓的Bresenham算法流程圖如下:
圖2.4橢圓的Bresenham算法流程圖
10
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
2.3.3算法程序描述
具體程序?qū)崿F(xiàn)見(jiàn)附錄5o
3直線段裁剪算法綜述
裁剪:確定圖形中哪些部分落在顯示區(qū)之內(nèi),哪些落在顯示區(qū)之外,
以便只顯示落在顯示區(qū)內(nèi)的那部分圖形。這個(gè)選擇過(guò)程稱為裁剪。
直線段裁剪算法是復(fù)雜圖元裁剪的基礎(chǔ)。復(fù)雜的曲線可以通過(guò)折線
段來(lái)近似,從而裁剪問(wèn)題也可以化為直線段的裁剪問(wèn)題。
3.1SutherIand-Cohen裁剪算法
3.1.1SutherIand-Cohen算法基本原理
Sutherland-Cohen算法分成兩步。第一步是判斷直線段是否完全
在窗口內(nèi),若在則該線段稱為完全可見(jiàn)的;或可顯然的決定線段完全在
窗口的外邊,稱為完全不可見(jiàn);對(duì)不能判斷完全可見(jiàn)或完全不可見(jiàn)的線
段則要進(jìn)行第二步處理。這時(shí)需要計(jì)算出直線段和窗口邊界的一個(gè)交
點(diǎn),這個(gè)交點(diǎn)把直線分成兩段,把其中一段顯然完全不可見(jiàn)的線段拋棄,
對(duì)余下的部分再作第一步判斷,重復(fù)上述過(guò)程,直到直線段最后余下的
部分可以用第一步的判斷得出肯定結(jié)論為止。
3.1.2SutherIand-Cohen算法實(shí)現(xiàn)步驟
基本思想:對(duì)于每條線段P〃2分為三種情況處理分為三種情況處
理:
(1)若P0完全在窗口內(nèi),則顯示該線段P/2,簡(jiǎn)稱“取”之。
(2)若p22明顯在窗口外,則丟棄該線段,簡(jiǎn)稱“棄”之。
(3)若線段不滿足“取”或“棄”的條件,則在交點(diǎn)處把線段分
為兩段。其中--段完全在窗口外,可棄之。然后對(duì)另一段重復(fù)上述處理。
為快速判斷,采用如下編碼方法:
每個(gè)區(qū)域賦予4位編碼(如圖3.1所示):
GGGG
其中:
「J1)'>>max「I1y<>min
C,=<C=<
0otherh[0other
ll
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
1X>工…
C,="max
0other
圖3.1區(qū)域編碼圖3.2線段不能用編碼確定
若pg完全在窗口內(nèi)codel=0,且code2=0,則“取”
若pg明顯在窗口外codel&code2W0,則“棄”
在交點(diǎn)處把線段分為兩段。其中一段完全在窗口外,可棄之。然后
對(duì)另一段重復(fù)上述處理。
計(jì)算線段PIA,M)P2卜,為)與窗口邊界的交點(diǎn)
if(LEFT&code!=0)
{x=XL;y=yl+(y2-yl)*(XL-xl)/(x2-xl);}
elseif(RIGHT&code!=0)
{x=XR;y=yl+(y2-yl)*(XR-xl)/(x2-xl);}
elseif(BOTTOM&code!=0)
{y=YB;x=xl+(x2-xl)*(YB-yl)/(y2-yl);}
elseif(TOP&code!=0)
{y=YT;x=xl+(x2-xl)*(YT-yl)/(y2-yl);}
3.1.3算法程序(或偽程序)描述
過(guò)程clip描述了這一算法。其中用一個(gè)集合(top,bottom,right,left)
來(lái)表示端點(diǎn)的編碼。具體程序見(jiàn)附錄6。
3.1.4算法流程圖
(略)
3.2中點(diǎn)分割裁剪算法
3.2.1中點(diǎn)分割算法基本原理與實(shí)現(xiàn)步驟
與前一種Cohen-Sutherland算法一樣首先對(duì)線段端點(diǎn)進(jìn)行編碼,
12
LH計(jì)算機(jī)圖形學(xué)作業(yè):共九道題
并把線段與窗口的關(guān)系分為三種情況:完全可見(jiàn)、完全不可見(jiàn)和線段與
窗口有交。對(duì)前兩種情況,進(jìn)行一樣的處理。對(duì)于第三種情況,用中點(diǎn)
分割的方法求出線段與窗口的交點(diǎn)。
求線段與窗口的交點(diǎn)如下:
設(shè)要裁剪的線段是R』。中點(diǎn)分割算法可分成兩個(gè)過(guò)程平行進(jìn)行,
即從P。出發(fā)找出離P。最近的可見(jiàn)點(diǎn)(圖3.3中的A點(diǎn)),和從R出發(fā)找
出離耳最近的可見(jiàn)點(diǎn)(圖3.3中的B點(diǎn))。這兩個(gè)最近可見(jiàn)點(diǎn)的連線就
是原線段的可見(jiàn)部分。
從P。出發(fā)找出最近可見(jiàn)點(diǎn)的辦法是先求P°R的中點(diǎn)匕,若P°Pm不能
定為顯然不可見(jiàn),則取P0Pm代替P0P,,否則取Pn,R代替P0P,,再對(duì)新的P°P|
求中點(diǎn)Pm。重復(fù)上述過(guò)程,直到PR"長(zhǎng)度小于給定的小數(shù)£為止。
圖3.4是求P。的最近可見(jiàn)點(diǎn)P的算法框圖。求R的最近可見(jiàn)點(diǎn)的算
法框圖是一樣的,只要把p0和P1交換即可。
在顯示時(shí)£可取成一個(gè)像素的寬度,對(duì)分辨率為2Nx2N的顯示器來(lái)
說(shuō),上面講的二分的過(guò)程最多只要做N次。由于計(jì)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)學(xué)生活化教學(xué)在小學(xué)科學(xué)教育中的角色
- 綜合實(shí)踐活動(dòng)在小學(xué)德育中的作用研究
- 電務(wù)段觸電傷害應(yīng)急預(yù)案
- 校園欺凌現(xiàn)象與法律應(yīng)對(duì)措施
- DB3715T 72-2025楊柳飛絮綜合防治技術(shù)規(guī)程
- 中外工程技術(shù)許可合同范例
- OEM技術(shù)合作合同(微機(jī)領(lǐng)域)
- 個(gè)人臨時(shí)借款合同范本
- 中外合資企業(yè)土地使用權(quán)轉(zhuǎn)讓協(xié)議合同
- 臨海市農(nóng)產(chǎn)品供需雙方種植收購(gòu)合同
- 探究水垢的主要成份
- 2022年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握袛?shù)學(xué)模擬試題及答案解析
- 小學(xué)生必備古詩(shī)
- 人教版英語(yǔ)八年級(jí)上冊(cè)單詞默寫表
- SRE Google運(yùn)維解密(中文版)
- 綜合性學(xué)習(xí)公開(kāi)課《我的語(yǔ)文生活》一等獎(jiǎng)?wù)n件
- IBM:中建八局ERP解決方案
- 高考語(yǔ)文復(fù)習(xí)高中語(yǔ)文文言文注釋集萃
- 初中歷史 教材分析與教學(xué)策略 課件
- 幼兒剪紙-打印版
- 如何提高和加強(qiáng)人力資源隊(duì)伍的建設(shè)
評(píng)論
0/150
提交評(píng)論