薛春艷
文章編號:1672-5913(2009)06-0046-03
摘要:“計算機圖形學(xué)”是計算機專業(yè)的一門非常重要的基礎(chǔ)課程,但在教學(xué)中存在很多問題,本文總結(jié)了兩種結(jié)合方式的教學(xué)方法,分析和探討了其在教學(xué)中的應(yīng)用。
關(guān)鍵詞:計算機圖形學(xué);教學(xué)方法;教學(xué)與實驗
中圖分類號:G642
文獻標(biāo)識碼:A
1引言
“計算機圖形學(xué)”在計算機科學(xué)與技術(shù)專業(yè)的一門基礎(chǔ)課,其課程涉及圖形硬件設(shè)備、圖形系統(tǒng)、交互技術(shù)、基本圖形生成算法、幾何變換、真實感圖形生成等內(nèi)容。在筆者的教學(xué)實踐當(dāng)中發(fā)現(xiàn)教學(xué)過程中普遍存在以下兩個問題。
1.1理論知識掌握方面
由于“計算機圖形學(xué)”具有較強理論性,部分算法比較抽象不易理解。所以學(xué)生在學(xué)習(xí)的時候很難將抽象算法與具體的三維圖像結(jié)合起來,經(jīng)常表現(xiàn)出畏難情緒。
1.2實踐能力培養(yǎng)方面
由于“計算機圖形學(xué)”課程的教學(xué)主要精力放在了圖形的基本概念和算法原理的講解上,上機實踐環(huán)節(jié)滯后;另外,現(xiàn)在大部分的教材中仍然是以Turbo C作為上機實習(xí)的平臺,但是由于Turbo C再實際應(yīng)用中早已不作為開發(fā)工具使用,學(xué)生并不能夠在實驗中獲得未來就業(yè)環(huán)境下真是需要掌握的編程知識,需要二次學(xué)習(xí)才能適應(yīng)社會的需求。
針對以上問題,給出以下解決方案。
2理論講解與具體開發(fā)工具的使用相結(jié)合
圖形通常由點、線、面、體等幾何元素和灰度、色彩、線型、線寬等非幾何屬性組成。如何在計算機中表示圖形以及利用計算機進行圖形的計算、處理和顯示的相關(guān)原理與算法,構(gòu)成了計算機圖形學(xué)的主要研究內(nèi)容。目前,大部分《計算機圖形學(xué)》教材都是以計算機圖形學(xué)的基本概念、基本理論、基本原理及經(jīng)典算法作為主要內(nèi)容,以豐富學(xué)生的基礎(chǔ)知識,培養(yǎng)學(xué)生的獨立研究能力。然而,在微型計算機日益普及的今天,隨著計算機科學(xué)及技術(shù)的發(fā)展,出現(xiàn)了很多功能完善的圖形軟件標(biāo)準(zhǔn)和圖形軟件,如何利用他們培養(yǎng)學(xué)生的學(xué)習(xí)興趣,提高實際應(yīng)用的能力,則是當(dāng)今教學(xué)的重點。
為了能夠更加廣泛地接觸和學(xué)習(xí)圖形軟件,筆者在以Turbo C語言作為開發(fā)工具來介紹基本圖元的經(jīng)典畫法的同時,將OpenGL引入到計算機圖形學(xué)的學(xué)習(xí)中。
OpenGL是近10年來發(fā)展起來的一個性能卓越的、通用共享的三維圖形標(biāo)準(zhǔn),已得到廣泛應(yīng)用。OpenGL提供十分清晰明了的圖形函數(shù),所以圖形繪制可以通過它的各種函數(shù)來實現(xiàn)。OpenGL具有標(biāo)準(zhǔn)型、穩(wěn)定性、可擴展性、可縮放性、易用性、可靠性和可移植性等特點。與其他圖形程序包相比,OpenGL應(yīng)用程序代碼行數(shù)少,又封裝了有關(guān)基本硬件的信息,因此在很多領(lǐng)域都得到廣泛的應(yīng)用。
在教學(xué)過程中,為了讓學(xué)生對“計算機圖形學(xué)”中所講解的知識能夠更好的理解和掌握,可以從三個步驟來進行講解:
2.1理論講解——基本概念、原理及算法
理論講解過程中,我們可以把OpenGL與之結(jié)合起來。例如:我們在講解直線的掃描算法時,首先介紹經(jīng)典的中點繪制直線算法和Bressman算法,通過這兩個算法的原理的介紹可以使學(xué)生了解到在計算機中怎樣以像素作為處理單位來實現(xiàn)直線的繪制。然后,我們可以介紹一下OpenGL中對直線進行繪制的方法,從而體會兩種開發(fā)工具的相同和不同之處:
(1) Turbo C:Bressman算法實現(xiàn)直線的繪制
voidBresenham_Line (int x1, int y1, int x2, int y2,int color)
{
intx, y, dx, dy, dk, i;
dx = x2 – x1;dy = y2–y1;dk = dy – dx;
x = x1;y = y1;
for (i = 0; i<=dx; i++)
{ putpixel (x, y, color);
x=x + 1;
if(dk<0)
dk=dk+2*dy;
else
{y = y + 1; dk = dk +2*dy– 2 * dx; }
}
}
(2)OpenGL實現(xiàn)
glBegin ( GL_LINES );
glColor3f(1.0,1.0,0.0);
glVertex2f(-11.0,8.0);
glVertex2f(-7.0,7.0);
glEnd();
在Turbo C中需要具體的算法和參數(shù)實現(xiàn)對像素逐個處理從而形成一條直線;在OpenGL中我們只需要給出直線的坐標(biāo)、屬性的數(shù)據(jù)就可以得到一條直線了。這樣學(xué)生就可以了解到直線的繪制原理,以及在實際開發(fā)中具體實現(xiàn)發(fā)法,有效地把理論知識與實際應(yīng)用結(jié)合起來,達到了較好的教學(xué)效果。
2.2多媒體演示——各種圖元、概念、算法的實現(xiàn)和變化過程
由于“計算機圖形學(xué)”這門課程中的很多理論知識比較抽象不容易理解,特別是需要學(xué)生具有較好的三維空間的立體感,才能更好的理解所學(xué)的知識,例如對坐標(biāo)變換、投影變換等部分的概念的理解,對很多學(xué)生來講都很難理解,為了達到更好的教學(xué)效果,可以將OpenGL引入到課程學(xué)習(xí)中,通過OpenGL的對應(yīng)函數(shù)的多媒體演示,幫助學(xué)生更好地掌握這部分知識。在介紹了基本的變換中的平移變換、縮放變換和旋轉(zhuǎn)變換的概念時,在計算機圖形學(xué)中我們一般是通過二維的圖形來幫助學(xué)生理解,如圖1~3。
OpenGL多媒體演示見圖4。
在OpenGL中分別使用glTranslatef()來表示平移變換,三個參數(shù)分別表示在三個坐標(biāo)平移的距離;glRotatef()用來表示旋轉(zhuǎn)變換,一個參數(shù)表示旋轉(zhuǎn)地角度,另外一個參數(shù)表示旋轉(zhuǎn)軸的坐標(biāo);glScalef()表示縮放變換,三個參數(shù)表示在三個坐標(biāo)軸方向的縮放比例。這里,通過多媒體可是課件,通過鼠標(biāo)來控制參數(shù)的值,根據(jù)參數(shù)值的變化,顯示效果也會隨之變化。通過這種三維的動態(tài)多媒體課件的演示,可以使學(xué)生更好的理解三種變換,同時對OpenGL中對應(yīng)的函數(shù)及其參數(shù)的具體含義有了更好的掌握。
2.3具體應(yīng)用——原理算法的具體應(yīng)用
在完成前兩個步驟的基礎(chǔ)上,可以通過一些小的應(yīng)用程序或游戲程序的演示,將其中對應(yīng)的圖形繪制方法的應(yīng)用提煉分析出來,這樣可以使學(xué)生對所學(xué)知識的具體應(yīng)用有較直觀的認(rèn)識,為其將來的進一步學(xué)習(xí)和實踐打下基礎(chǔ)。
3教學(xué)與實驗相結(jié)合
“計算機圖形學(xué)”是一門實踐性很強的課程,但在目前,普遍存在的現(xiàn)象是“計算機圖形學(xué)”課程的理論教學(xué)內(nèi)容存在著一定孤立性,與上機實踐聯(lián)系并不緊密;因此,有必要加強學(xué)生動手能力的培養(yǎng)。為了確保計算機圖形學(xué)課程的教學(xué)質(zhì)量,應(yīng)該選用目前市場上比較流行的圖形開發(fā)環(huán)境作為學(xué)生的實踐環(huán)境,同時也要注重課堂知識的消化,因此理論知識的對應(yīng)實驗也不能輕視。筆者認(rèn)為應(yīng)將兩者有效地結(jié)合起來才能達到更好的效果。
為了能夠幫助學(xué)生更好地理解理論知識,更好地提高動手能力,實驗部分可以分三部分進行:
(1) 基礎(chǔ)實驗:主要完成各種理論講解過程中學(xué)習(xí)的代碼實現(xiàn),編程環(huán)境為Turbo C。
(2) 提高實驗:以Visual C++ 和OpenGL作為開發(fā)環(huán)境,進行實踐動手能力的培養(yǎng)和訓(xùn)練。
(3) 體驗實驗:以3D Max作為開發(fā)環(huán)境,進行圖形圖像軟件開發(fā)的體驗實驗。
基礎(chǔ)實驗可以幫助學(xué)生更好地理解基本的理論和各種基本圖元的經(jīng)典算法。
提高實驗可以提高學(xué)生理論聯(lián)系實際的能力,能夠使學(xué)生更多地接觸實際開發(fā)中所使用的工具和開發(fā)環(huán)境,為將來的工作打好基礎(chǔ)。
體驗實驗中的3DMax是圖形開發(fā)的具體產(chǎn)品,通過對其的使用和接觸,可以讓學(xué)生感知到計算機圖形學(xué)的應(yīng)用情況。
通過基礎(chǔ)實驗、提高實驗和體驗實驗的結(jié)合練習(xí),不但可以提高學(xué)生的編程能力,而且加深了學(xué)生對所學(xué)知識的了解和認(rèn)識,使學(xué)生對“計算機圖形學(xué)”的實際應(yīng)用有了感性的認(rèn)識。
4結(jié)語
“計算機圖形學(xué)”是計算機學(xué)科的主要基礎(chǔ)課程之一,但由于各種原因,學(xué)生學(xué)起來有一定的難度,這給授課的教師帶來相當(dāng)大的挑戰(zhàn)?!坝嬎銠C圖形學(xué)”的教學(xué)是一個復(fù)雜的系統(tǒng)工程,它會涉及到諸多方面的問題,以上所述僅僅是筆者授課過程中得粗略總結(jié),有不妥或不足之處,敬請大家批評指正。
參考文獻:
[1] 張曦煌,杜俊俐. 計算機圖形學(xué)[M]. 北京郵電大學(xué)出版社,2006,8.
[2] OpenGL體系結(jié)構(gòu)審核委員會等. OpenGL編程指南(第4版)[M]. 人民郵電出版社,2005,4.
[3] 陳元琰, 張睿哲, 吳東. 計算機圖形學(xué)實用技術(shù)(第2版)[M]. 清華大學(xué)出版社,2007,3.
Teaching method discussion of Computer Graphics
XUE Chun-yan
( XiamenUniversity Tan Kah Kee college)
Abstract:Computer Graphics is a very importment course of computer speciality , here are a lot of problems in teaching, this text has summarize two kinds of teaching methods and has analyzed and probed into its application in teaching.
Key words: Computer Graphics; teaching method