李紅林
摘 要:本文針對(duì)傳統(tǒng)圖形學(xué)的教學(xué)方式存在的不足,對(duì)計(jì)算機(jī)圖形學(xué)中基本的圖元生成算法的可視化進(jìn)行了研究,并基于VC 6.0/MFC,實(shí)現(xiàn)了計(jì)算機(jī)基本圖元可視化教學(xué)演示系統(tǒng),使學(xué)生真正理解了基本圖形元素的生成的具體過(guò)程,從而提高了學(xué)生的學(xué)習(xí)興趣。
關(guān)鍵詞: VC 圖元 掃描轉(zhuǎn)換 區(qū)域填充
中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2016)05(a)-0000-00
計(jì)算機(jī)圖形學(xué)是研究利用計(jì)算機(jī)生成、處理圖形的學(xué)科[1]。該課程要求學(xué)生具有一定的程序設(shè)計(jì)知識(shí)和數(shù)學(xué)知識(shí)。在教學(xué)中,很多學(xué)校采用播放靜態(tài)圖片和一些基本算法源程序組成的教學(xué)幻燈片的模式。學(xué)生較難理解圖形學(xué)算法的精要,從而影響其學(xué)習(xí)的主動(dòng)性和積極性?;诖耍疚幕赩C++6.0 ,對(duì)圖形學(xué)中基本圖元生成算法的可視化進(jìn)行了研究。
基本圖形元素是指點(diǎn)、線、圓(圓?。?、區(qū)域填充和字符等[2]。在光柵掃描顯示器上顯示的圖形,都是具有一種或多種顏色的像素的集合。確定最佳逼近圖形的像素集合,并用指定屬性寫(xiě)像素的過(guò)程稱(chēng)圖形的掃描轉(zhuǎn)換或生成[3]。本文主要研究點(diǎn)、線、圓的生成及填充。
1 點(diǎn)生成
計(jì)算機(jī)的光柵顯示器可看作一個(gè)像素的矩陣,在其上顯示圖形,實(shí)際上是其中特定像素的集合[4]。點(diǎn)用一個(gè)像素表示,它是最基本的圖形元素。屏幕上的一個(gè)點(diǎn)的坐標(biāo)(x,y)代表一個(gè)像素點(diǎn),要使該像素點(diǎn)發(fā)亮,需在緩沖器的對(duì)應(yīng)地址位處,寫(xiě)一個(gè)灰度級(jí)別或色彩值。
2 直線生成
直線生成,實(shí)際上是在線段所對(duì)應(yīng)的像素上畫(huà)點(diǎn)的連續(xù)過(guò)程[2]。主要有直線方程、DDA、中點(diǎn)畫(huà)線、Bresenham畫(huà)線算法等。本文生成直線時(shí),斜率取值為:。
2.1 直線方程生成直線
利用方程生成直線。當(dāng)x每增加或減少1,代入直線方程算一算y的取值。
2.2 DDA算法
算法的實(shí)質(zhì)是用數(shù)值方法解微分方程,是一種增量的方法。同時(shí)對(duì)x和y各增加一個(gè)小增量來(lái)計(jì)算下一步的x、y值。當(dāng)時(shí),x 每增加或減少1,y就增加或減少k。
2.3中點(diǎn)畫(huà)線算法
如圖1所示。在圖1中, M是P1P2的中點(diǎn),Q為直線與P1P2的交點(diǎn),P是當(dāng)前點(diǎn),P的下一個(gè)距離理想直線最近的點(diǎn)要么取P1,要么取P2。若M在理想直線的下方,下一個(gè)點(diǎn)取P2,若M在理想直線的上方,P的下一個(gè)點(diǎn)應(yīng)該取P1。若M恰好在理想直線上,下一個(gè)點(diǎn)可取P1也可取P2。以此類(lèi)推,找到其余距離理想直線較近的點(diǎn)。
2.4 Brenham畫(huà)線算法
如圖2所示。已知當(dāng)前點(diǎn)是P,Q為直線與P1P2的交點(diǎn),Q把P1P2分成兩段,一段是t,另一段是s,P的下一個(gè)距離理想直線最近的點(diǎn)要么取P1,要么取P2。若s>t,P的下一個(gè)點(diǎn)取P2;若s3 圓掃描轉(zhuǎn)換算法
若要掃描轉(zhuǎn)換圓,常用的方法有中點(diǎn)法與Bresenham畫(huà)圓算法。
3.1中點(diǎn)畫(huà)圓算法
如圖3所示,P是當(dāng)前點(diǎn),M是P1P2的中點(diǎn),要確定P的下一個(gè)距離理想圓弧較近的點(diǎn)是P1還是P2,只需把M點(diǎn)的坐標(biāo)代入圓的方程,若,則說(shuō)明M在圓外,下一個(gè)距離理想圓弧較近的點(diǎn)是P2,若,則說(shuō)明M在圓內(nèi),下一個(gè)距離理想圓弧較近的點(diǎn)是P1,若,則說(shuō)明M在圓上,下一個(gè)距離理想圓弧較近的點(diǎn)可以是P1也可以是P2。以此類(lèi)推,依次找到距離理想圓弧較近的1/8圓周上的所有點(diǎn)。
3.2 Bresenham畫(huà)圓算法
如圖4所示,P是當(dāng)前點(diǎn),Q是級(jí)段P1P2與理想圓弧的交點(diǎn),要確定P的下一個(gè)距離理想圓弧較近的點(diǎn)是P1還是P2。假設(shè)P1到Q的距離為d1,P2到Q的距離為d2。若d1>d2,下一個(gè)距離理想圓弧較近的點(diǎn)是P2,若d1