武丹 許如星 中國計(jì)量大學(xué)理學(xué)院
計(jì)算機(jī)圖形學(xué)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的選修課。這是一門研究如何使用計(jì)算機(jī)來生成、處理和顯示圖形的學(xué)科。圖形用戶界面已經(jīng)成為軟件的重要組成部分,以圖形化的方式表達(dá)抽象概念或數(shù)據(jù)(可視化)已成為信息領(lǐng)域的一個(gè)重要趨勢(shì)。開設(shè)這門課的目的是讓學(xué)生理解和掌握?qǐng)D形。學(xué)習(xí)的基本概念、方法和技術(shù)使學(xué)生掌握計(jì)算機(jī)圖形處理系統(tǒng)的組成和工作原理,具有一定的開發(fā)圖形應(yīng)用系統(tǒng)的能力。通過本課程的學(xué)習(xí),學(xué)生熟悉圖形生成的基本理論,掌握三維真實(shí)感圖形的生成算法,并利用Visual C++的MFC框架編程的實(shí)現(xiàn)方法。而橢圓的繪制作為其中非常重要的一個(gè)方向,需要學(xué)生熟練掌握?;诖吮疚膶?duì)橢圓的繪制算法進(jìn)行詳細(xì)解讀,并對(duì)其中的需要注意的問題進(jìn)行討論。接下來我們按照順序來對(duì)其進(jìn)行講解。
在圓的繪制中,需要繪制八分之一的圓弧??紤]到橢圓的對(duì)稱性,可以根據(jù)對(duì)稱軸x=0和y=0把橢圓分成四份。只要畫出第一象限的1/4個(gè)橢圓弧,就可以根據(jù)對(duì)稱性畫出整個(gè)橢圓。這被稱為四分位橢圓算法。知道第一象限中的點(diǎn)P(x,y),可以求出橢圓順時(shí)針方向的其他三個(gè)對(duì)稱性是p(x,y),p(x,y),p(x,y)。這一點(diǎn)需要和學(xué)生提前講明,在以往的授課過程中,學(xué)生編程時(shí)很容易出錯(cuò)。
為了區(qū)分第一象限的橢圓弧的不同,需要計(jì)算橢圓弧上任一點(diǎn)的法矢量。利用《高等數(shù)學(xué)》中的偏導(dǎo)數(shù)計(jì)算橢圓上任意一點(diǎn)P(x,y)處的法矢量
式中,i和j是沿x軸向和沿y軸向的單位矢量。
在上半部分Ⅰ,x方向每次加1,y方向上減不減1取決于中點(diǎn)誤差項(xiàng)的值。從Pi(xi,yi)點(diǎn)出發(fā)選取下一像素時(shí),需將Pu(xi+1,yi)和Pd(xi+1,yi-1)的中點(diǎn)M(xi+1,yi-0.5)代入隱函數(shù),構(gòu)造中點(diǎn)誤差項(xiàng)
假定圖1中)點(diǎn)是橢圓弧上半部分Ⅰ的最后一個(gè)像素+1,yi-0.5)是用于判斷選取Pu和Pd像素的中點(diǎn)。由于下一像素就轉(zhuǎn)入了橢圓弧的下半部分Ⅱ,所以其中點(diǎn)轉(zhuǎn)換為判斷Pl和Pr的中點(diǎn)MⅡ(xi+0.5,yi-1),所以下半部分的初始值d20為
橢圓曲線的繪制是計(jì)算機(jī)圖形中非常基礎(chǔ)的算法,因此要求學(xué)生必須掌握,但是對(duì)于初次利用高等數(shù)學(xué)中的知識(shí)來解決計(jì)算機(jī)圖形學(xué)中的簡(jiǎn)單問題,需要把學(xué)生的數(shù)學(xué)知識(shí)轉(zhuǎn)換為編程知識(shí),因此需要特別注意橢圓弧的分段表示,橢圓弧的初始值的繪制,以及橢圓弧不同階段的遞推公式。通過這樣簡(jiǎn)單的分析,學(xué)生能夠很好的理解算法過程,并能夠?qū)崿F(xiàn)代碼。
[1]孔令德,計(jì)算機(jī)圖形學(xué)-基于MFC三維圖形開發(fā),清華大學(xué)出版社,2014