陳素根
(安慶師范學(xué)院數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,安徽安慶 246133)
Matlab在“計(jì)算機(jī)圖形學(xué)”教學(xué)中的應(yīng)用
陳素根
(安慶師范學(xué)院數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,安徽安慶 246133)
結(jié)合Matlab在圖形表示、圖形繪制方面的功能和信息與計(jì)算科學(xué)專業(yè)的培養(yǎng)目標(biāo)及教學(xué)實(shí)際情況,將Matlab引入到計(jì)算機(jī)圖形學(xué)教學(xué)中,通過在計(jì)算機(jī)圖形學(xué)課堂教學(xué)、實(shí)驗(yàn)教學(xué)及學(xué)生實(shí)驗(yàn)設(shè)計(jì)等環(huán)節(jié)中引入Matlab,學(xué)生更易理解并掌握?qǐng)D形學(xué)基本理論和原理,學(xué)生實(shí)驗(yàn)設(shè)計(jì)成果表明教學(xué)效果良好。
Matlab;計(jì)算機(jī)圖形學(xué);教學(xué)設(shè)計(jì);可視化
計(jì)算機(jī)圖形學(xué)是研究怎樣利用計(jì)算機(jī)來顯示、生成和處理圖形的原理、方法和技術(shù)的一門學(xué)科,也是計(jì)算機(jī)及相關(guān)專業(yè)的一門重要的專業(yè)選修課[1-2]。該課程開設(shè)的目的在于使學(xué)生掌握計(jì)算機(jī)圖形生成與處理技術(shù)的基礎(chǔ)知識(shí)、基本原理和方法。在計(jì)算機(jī)圖形學(xué)教學(xué)過程中發(fā)現(xiàn),該課程理論難度大、實(shí)踐性強(qiáng),極易造成教學(xué)低效、學(xué)生厭學(xué)的不良現(xiàn)象,如何激發(fā)學(xué)生學(xué)習(xí)的熱情和提高教學(xué)效率是值得思考的問題。
Visual C++和OpenGL是目前國內(nèi)高校計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)教學(xué)使用的主要編程工具[3-4],然而,在講授計(jì)算機(jī)圖形學(xué)課程的過程中發(fā)現(xiàn),雖然信息與計(jì)算科學(xué)專業(yè)的學(xué)生普遍具有一定的數(shù)學(xué)知識(shí)和簡(jiǎn)單的編程基礎(chǔ),但對(duì)Visual C++和Open-GL程序設(shè)計(jì)掌握的不是很好。所以,要想在有限的教學(xué)實(shí)驗(yàn)時(shí)間內(nèi)利用這么復(fù)雜的編程工具,無論對(duì)學(xué)生還是教師都是很大的挑戰(zhàn)。慶幸的是,Matlab作為當(dāng)前應(yīng)用最廣泛的科學(xué)與工程計(jì)算軟件之一,它提供了基于矩陣的三維繪制函數(shù),在圖形窗口上和語言中都提供了變換視點(diǎn)等功能,可以直觀地從各個(gè)角度觀察繪制出三維物體,其在計(jì)算機(jī)圖形圖像處理上已顯示出了強(qiáng)大的計(jì)算及可視化功能[5-6],近年來,關(guān)于計(jì)算機(jī)圖形學(xué)教學(xué)改革和Matlab在圖形學(xué)中的應(yīng)用的研究也有很多[7-8]。因此,將Matlab引入到信息與計(jì)算科學(xué)專業(yè)“計(jì)算機(jī)圖形學(xué)”課程教學(xué)中,有利于學(xué)生掌握基本的圖形生成原理及算法,提高教學(xué)效果。
1.1 基本圖形的表示
在二維圖形系統(tǒng)中將基本圖形元素稱為圖素或圖元,在三維圖形系統(tǒng)中稱為體素,常見的基本圖形元素包括點(diǎn)、線、面、體等。二維圖形繪制:line函數(shù)在當(dāng)前坐標(biāo)系中繪制直線段,rectangle函數(shù)繪制矩形、橢圓與圓,patch函數(shù)繪制多邊形,plot函數(shù)與fplot函數(shù)繪制平面曲線;三維圖形的繪制:plot3函數(shù)繪制三維空間中的點(diǎn)和曲線,patch函數(shù)繪制網(wǎng)格圖形和表面圖形,mesh函數(shù)繪制網(wǎng)格曲面,surf函數(shù)繪制表面曲面。
1.2 非規(guī)則對(duì)象的表示
非規(guī)則對(duì)象是指不能用歐氏幾何加以描述的對(duì)象,如山、水、樹、草、云等自然界豐富多彩的對(duì)象,其中分形幾何方法是描述自然景物和自然現(xiàn)象的重要方法之一。通過簡(jiǎn)單迭代編程,即可繪制各種分形圖形,如雪花曲線、分形樹等。
1.3 曲線曲面的繪制
曲線與曲面是計(jì)算機(jī)圖形學(xué)中重要的研究對(duì)象,是計(jì)算機(jī)繪圖與動(dòng)畫技術(shù)的核心要素。曲線繪制:(1)interpl函數(shù)實(shí)現(xiàn)一維數(shù)據(jù)插值,interp2函數(shù)實(shí)現(xiàn)二維數(shù)據(jù)插值,interp3函數(shù)實(shí)現(xiàn)三維數(shù)據(jù)插值,ployfit函數(shù)實(shí)現(xiàn)最小二乘多項(xiàng)式曲線擬合,spline函數(shù)實(shí)現(xiàn)三次樣條插值。(2)常見曲線有Hermite曲線、Bézier曲線、B樣條曲線。曲面繪制有:cylinder函數(shù)繪制柱體或臺(tái)體,sphere函數(shù)生成球體,ellipsoid函數(shù)繪制橢球體。常見曲面有Bézier曲面、B樣條曲面、NURBS曲面。
1.4 真實(shí)感圖形的繪制
真實(shí)感圖形繪制是指通過綜合利用數(shù)學(xué)、物理學(xué)、計(jì)算機(jī)以及心理學(xué)等知識(shí)在計(jì)算機(jī)圖形輸出設(shè)備上繪制出能夠以假亂真的美麗景象。Matlab提供了關(guān)于光照模型、紋理映射、實(shí)時(shí)消隱等技術(shù)支持,很方便用于真實(shí)感圖形的繪制。
通過將Matlab引入到計(jì)算機(jī)圖形學(xué)的教學(xué)中,學(xué)生可以很直觀地理解圖形學(xué)中圖形生成的基本原理和算法。在課堂教學(xué)過程中,注重理論原理講述并利用Matlab及時(shí)顯示效果;在實(shí)驗(yàn)教學(xué)過程中,注重基本命令和編程思想的講述,讓理論與實(shí)際完美結(jié)合;在課程教學(xué)之余,鼓勵(lì)學(xué)生發(fā)揮個(gè)人能力,動(dòng)手編程與設(shè)計(jì)。以曲線曲面造型為例,從課堂教學(xué)設(shè)計(jì)、實(shí)驗(yàn)教學(xué)設(shè)計(jì)和學(xué)生實(shí)驗(yàn)設(shè)計(jì)三個(gè)方面舉例說明。
2.1 課堂教學(xué)設(shè)計(jì)
課堂教學(xué)對(duì)于任何一門課程來說都是非常重要的,只有設(shè)計(jì)好課堂教學(xué),才能讓學(xué)生深刻理解圖形學(xué)的基本概念、基本原理和理論。曲線曲面造型是計(jì)算機(jī)圖形學(xué)中重要內(nèi)容之一,Bézier曲線和B樣條曲線由于結(jié)構(gòu)簡(jiǎn)單直觀而成為曲線設(shè)計(jì)常用方法之一。
定義1給定4個(gè)控制頂點(diǎn)P0,P1,P2,P3和3次Bernstein基函數(shù)Bi,3(t),t∈[0,1],i=0,1,2,3,則3次Bézier曲線定義為p(t)=P0·B03(t)+P1·B13(t)+P2·B23(t)+P3·B33(t),其中,B03(t)=(1-t)3,B13(t)=3t(1-t)2,B23(t)= 3t2(1-t),B33(t)=t3。
定義2給定4個(gè)控制頂點(diǎn)Q0,Q1,Q2,Q3和3次均勻B樣條基函數(shù)bi,3(t),t∈[0,1],i=0,1,2,3,則3次B樣條曲線定義為q(t)=Q0· b03(t)+Q1·b13(t)+Q2·b23(t)+Q3·b33(t),其中,b03(t)=(1-t)3/6,b13(t)=(3t3-6t2+ 4)/6,b23(t)=(-3t3+3t2+3t+1)/6,b33(t)= t3/6。
從定義1和定義2不難發(fā)現(xiàn),3次Bézier曲線和3次均勻B樣條曲線的定義在形式上是非常相似的,主要差別體現(xiàn)在基函數(shù)的不同。所以,為了研究曲線的性質(zhì),首先要弄清楚基函數(shù)的性質(zhì)。然而,對(duì)于復(fù)雜的數(shù)學(xué)推導(dǎo)以及抽象的性質(zhì)直接理解是比較困難的,可以借助Matlab畫出基函數(shù)圖形,直接從圖形觀察,學(xué)生可以輕松的理解Bernstein基函數(shù)的很多性質(zhì),如非負(fù)性、規(guī)范性、對(duì)稱性等,進(jìn)而可以理解曲線的相關(guān)性質(zhì),圖1給出了3次Bernstein基函數(shù)圖形。下面簡(jiǎn)單給出Bernstein基函數(shù)繪制代碼:
hold on%繪制3次Bernstein基函數(shù)
在教學(xué)過程中,結(jié)合上述代碼介紹線型、線寬和顏色的使用,如曲線的線型有實(shí)線(-)、虛線(--)、點(diǎn)劃線(-.)和點(diǎn)線(:)等;曲線顏色有紅色(r)、綠色(g)、藍(lán)色(b)和黑色(k)等。類似地可以繪制3次均勻B樣條基函數(shù),圖2給出了3次均勻B樣條基函數(shù)圖形。在此基礎(chǔ)上,再給出詳細(xì)的數(shù)學(xué)推導(dǎo)過程和其他性質(zhì),如端點(diǎn)性質(zhì)、凸包性等。再利用Matlab畫出曲線圖形,觀察圖形加深對(duì)曲線性質(zhì)的理解,圖3給出了3次Bézier曲線的圖形,圖4給出了3次均勻B樣條曲線的圖形。
2.2 實(shí)驗(yàn)教學(xué)設(shè)計(jì)
實(shí)驗(yàn)教學(xué)對(duì)于計(jì)算機(jī)圖形學(xué)來說也是非常重要的,它是課堂教學(xué)的延續(xù),更是對(duì)基本概念、基本原理和理論深入理解的過程,所以設(shè)計(jì)好實(shí)驗(yàn)教學(xué),才能讓學(xué)生深刻理解圖形學(xué)的基本概念、基本原理和理論。在實(shí)驗(yàn)教學(xué)中,可以通過控制頂點(diǎn)對(duì)曲線的形狀進(jìn)行調(diào)節(jié)以及通過曲線拼接實(shí)現(xiàn)圖形的設(shè)計(jì),真正做到理論聯(lián)系實(shí)際,學(xué)生才可以對(duì)學(xué)習(xí)感興趣,主動(dòng)動(dòng)手實(shí)踐,提高編程能力。為了更好地理解控制頂點(diǎn)對(duì)曲線形狀的調(diào)節(jié)作用,圖5給出了控制頂點(diǎn)對(duì)Bézier曲線形狀的影響,在此介紹plot函數(shù)作圖時(shí)標(biāo)記參數(shù)的使用。下面簡(jiǎn)單給出3次Bézier曲線及控制多邊形繪制代碼。
圖1 3次Bernstein基函數(shù)圖形
圖2 3次均勻B樣條基函數(shù)圖形
圖3 3次Bézier曲線圖形
圖4 3次均勻B樣條曲線圖形
圖5 控制頂點(diǎn)對(duì)Bézier曲線形狀調(diào)節(jié)
圖6 Bézier曲線拼接效果圖
然后通過不斷修改控制頂點(diǎn)P,并利用線型和標(biāo)記進(jìn)行區(qū)分,很容易看出控制頂點(diǎn)對(duì)曲線形狀的調(diào)控作用(見圖5)。同時(shí),稍微修改上述代碼即可繪制3次均勻B樣條曲線圖形(見圖4)。在學(xué)生可以順利繪制基本曲線圖形以后,對(duì)上述代碼進(jìn)行修改,并結(jié)合曲線拼接連續(xù)性條件就可以曲線拼接作圖了,圖6給出了Bézier曲線拼接的效果圖。通過這樣的設(shè)計(jì)進(jìn)行講解,可以幫助學(xué)生進(jìn)一步理解曲線的性質(zhì),也有利于學(xué)生根據(jù)自己的興趣設(shè)計(jì)出各種圖形。
2.3 學(xué)生實(shí)驗(yàn)設(shè)計(jì)
經(jīng)過良好的課堂教學(xué)與實(shí)驗(yàn)教學(xué)設(shè)計(jì),學(xué)生可以更好的理解和掌握計(jì)算機(jī)圖形學(xué)的原理與算法,鼓勵(lì)學(xué)生充分發(fā)揮個(gè)人的能力,讓他們動(dòng)手編程設(shè)計(jì)自己感興趣的圖形,并安排時(shí)間集中點(diǎn)評(píng)與討論。圖7為學(xué)生設(shè)計(jì)的部分作品,圖7(a)為一個(gè)卡通人物頭像,圖7(b)為一把雨傘實(shí)物圖,圖7(c)為一把吉他實(shí)物圖。對(duì)于圖7(a),利用曲線繪制頭型、發(fā)型、臉型、眉毛等,再利用畫點(diǎn)、填充等進(jìn)行點(diǎn)綴,這樣使圖像顯得可愛;對(duì)于圖7(b),利用線型、線寬作圖繪制傘柄,利用曲面繪制傘面,再簡(jiǎn)單地進(jìn)行光照處理,這樣圖形更具有真實(shí)感;對(duì)于圖7(c),利用曲線繪制吉他外形,再利用顏色、線寬等進(jìn)行局部繪制,這樣使圖形與實(shí)物更神似。從這些作品可以看出,學(xué)生的想象力是豐富多彩的,通過集中交流與討論,鼓勵(lì)每一個(gè)學(xué)生參與到親自動(dòng)手設(shè)計(jì)活動(dòng)中來,這樣不僅可以與他們個(gè)人興趣愛好相結(jié)合,還可以讓他們更加留意身邊的實(shí)物,更好地發(fā)揮主觀能動(dòng)性,在愉悅的心情中學(xué)習(xí)知識(shí)和提高能力。
圖7 學(xué)生設(shè)計(jì)的部分作品
本文針對(duì)將Matlab應(yīng)用到計(jì)算機(jī)圖形學(xué)課堂教學(xué)與實(shí)驗(yàn)教學(xué)進(jìn)行了討論,以曲線曲面為例介紹了Matlab在計(jì)算機(jī)圖形學(xué)中的應(yīng)用。從中可以看出,采用Matlab作為計(jì)算機(jī)圖形學(xué)課堂教學(xué)和實(shí)驗(yàn)教學(xué)的程序設(shè)計(jì)工具,具有程序簡(jiǎn)單、顯示方便等優(yōu)點(diǎn),有利于學(xué)生更好的理解算法原理和激發(fā)學(xué)生的學(xué)習(xí)興趣,提高教學(xué)質(zhì)量和水平。如何設(shè)計(jì)好課堂教學(xué)與實(shí)驗(yàn)教學(xué)過程,充分利用Matlab非常強(qiáng)大的功能來幫助學(xué)生更好的學(xué)習(xí)計(jì)算機(jī)圖形學(xué),是值得思考與探索的問題。
[1]Donald Hearn M,Pauline Baker.計(jì)算機(jī)圖形學(xué)[M].蔡士杰,宋繼強(qiáng),蔡敏,譯.北京:電子工業(yè)出版社,2005:1-63.
[2]陸楓,何云峰.計(jì)算機(jī)圖形學(xué)基礎(chǔ)[M].第2版.北京:電子工業(yè)出版社,2008:1-316.
[3]周進(jìn),朱訓(xùn)林,張宏林.Visual C++實(shí)用教程[M].北京:人民郵電出版社,2008:1-280.
[4]李軍,許波.OpenGL編程指南[M].北京:機(jī)械工業(yè)出版社,2010:1-519.
[5]于萬波.基于MATLAB的計(jì)算機(jī)圖形學(xué)與動(dòng)畫技術(shù)[M].北京:清華大學(xué)出版社,2007:1-151.
[6]李南南,吳清,曹輝林.MATLAB7簡(jiǎn)明教程[M].北京:清華大學(xué)出版社,2006:1-357.
[7]胡建平,李鵬松.Matlab在計(jì)算機(jī)圖形學(xué)中的應(yīng)用[J].東北電力大學(xué)學(xué)報(bào),2013,33(6):71-74.
[8]郭玉珂.基于示例的《計(jì)算機(jī)圖形學(xué)》教學(xué)改革研究[J].現(xiàn)代計(jì)算機(jī),2013,31(21):43-46.
Applications of Matlab to the Teaching of Computer Graphics
CHEN Su-gen
(School of Mathematics&Computational Science,Anqing Teachers College,Anqing 246133,China)
Considering the powerful function of Matlab in graphical representation,graph drawing and the teaching goal and practice in themajor of information and computation science,Matlab was introduced to the teaching of computer graphics.The application of Matlab in the process of classroom teaching,experiment teaching and the experimental design is benefit for students to understand and master the basic theory and principle of computer graphics.The resultsof students'experimental design show that the teachingmethod is effective.
Matlab,computer graphics,teaching design,visualization
TP317
A
1007-4260(2014)03-0131-04
時(shí)間:2014-9-15 16:07 網(wǎng)絡(luò)出版地址:http://www.cnki.net/kcms/doi/10.13757/j.cnki.cn34-1150/n.2014.03.032.html
2013-02-17
安慶師范學(xué)院教學(xué)研究項(xiàng)目資助。
陳素根,男,安徽當(dāng)涂人,碩士,在讀博士,安慶師范學(xué)院數(shù)學(xué)與計(jì)算科學(xué)學(xué)院講師,研究方向?yàn)镃AGD&CG,從事數(shù)學(xué)分析與計(jì)算機(jī)圖形學(xué)教學(xué)。