馬燕,張玉萍,李順寶,李魯群,張波
摘要:由于計算機圖形學(xué)課程算法抽象,學(xué)生掌握知識困難,教學(xué)效果不理想,文章從理論與實驗教學(xué)兩方面分析了如何融合學(xué)科內(nèi)外知識,提出在理論教學(xué)過程中,構(gòu)建“樹型”知識結(jié)構(gòu),將學(xué)科內(nèi)外知識加以貫穿與融合。本文提出在實驗教學(xué)中,按實驗?zāi)康摹⒁蠛碗y度,將其分為基礎(chǔ)、綜合和拓展三類實驗,通過不同類型的實驗,進(jìn)一步融合各學(xué)科的內(nèi)外知識,鼓勵學(xué)生在掌握基礎(chǔ)理論的同時,大膽創(chuàng)新,深入實踐,幫助學(xué)生建立起更為全面、寬廣的知識體系。
關(guān)鍵詞:計算機圖形學(xué);樹型知識結(jié)構(gòu);知識融合
中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2017)45-0166-04
一、引言
什么是計算機圖形學(xué)?在維基百科上的定義是利用計算機生成圖形和動畫[1]。這樣一個看似簡單的定義,真正展開的話,其內(nèi)涵極其豐富。僅就圖形而言,就包括各種形式的圖形,如二維的、三維的、直線的、曲線的、有陰影的、有光照的等。討論其中最簡單的二維圖形,也有多種情況,有線框圖、彩色圖、灰度圖,還可以對二維圖形加上裁剪、仿射變換、投影等效果。這些不同形式的圖形如果在屏幕上顯示的話,需要學(xué)生掌握大量的相關(guān)算法。如果在教學(xué)中,按照書中的算法照本宣讀,學(xué)生不容易理解,掌握知識困難,這勢必會影響學(xué)生學(xué)習(xí)的效果,甚至?xí)箤W(xué)生對課程產(chǎn)生厭煩心理,最終造成教學(xué)效果不理想。為了提高學(xué)生學(xué)習(xí)的積極性與主動性,需要對計算機圖形學(xué)中的各個知識點做一一分析,理清各知識點間的內(nèi)在關(guān)系,從向?qū)W生灌輸知識逐步向培養(yǎng)學(xué)生的能力轉(zhuǎn)變[2]。
計算機圖形學(xué)是一門綜合性的學(xué)科,從其基本理論來講,它以數(shù)學(xué)、物理等學(xué)科為支撐,又與數(shù)字圖像處理、模式識別和計算幾何等學(xué)科息息相關(guān),互為支撐。從學(xué)生需掌握的操作技能來講,除了要求學(xué)生具備較強的編程能力之外,還需要學(xué)生具有一定的數(shù)學(xué)建模思想[3]。對于這樣一門屬于交叉學(xué)科的課程,如果在理論和實驗教學(xué)過程中,能將本學(xué)科內(nèi)有關(guān)的知識前后貫穿與融合,同時又打破學(xué)科壁壘,將其他學(xué)科的知識也做到有機融合,這對于學(xué)生理解與掌握知識將大有裨益,更能夠激發(fā)學(xué)生的創(chuàng)新思維,使其在更高層次的交叉學(xué)科領(lǐng)域有所作為[4,5]。
二、融合學(xué)科內(nèi)外知識,構(gòu)建“樹型”知識結(jié)構(gòu)
計算機圖形學(xué)教材的主要任務(wù)是把圖形學(xué)的基本原理與算法交代清楚,而這些算法的來龍去脈、支撐理論等這些相關(guān)內(nèi)容則需要教師在授課前做仔細(xì)分析。我們可以按實際情況,分別采用金字塔結(jié)構(gòu)、線性結(jié)構(gòu)、“樹型”結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)來表示知識點之間的關(guān)系[6]。
圖1所示是以Bezier曲線知識點為例構(gòu)建的“樹型”知識結(jié)構(gòu)。下面以此為例,說明在進(jìn)行理論教學(xué)的過程中,如何融合學(xué)科內(nèi)外知識,激發(fā)學(xué)生學(xué)習(xí)的興趣,提高課堂效果與效率。
1. 0層。0層對應(yīng)根結(jié)點曲線,從曲線與直線、曲面前后銜接關(guān)系來看,我們可以將其簡化為一個線性結(jié)構(gòu):直線→曲線→曲面,直線的生成方法是生成曲線的基礎(chǔ),兩者的生成原理有相通的地方。比如,Bresenham直線生成算法是一種最佳逼近的過程,而Bezier曲線或B樣條曲線生成算法也是一種最佳逼近的過程。教師如果能夠指出這兩個知識點的共通之處,對于學(xué)生掌握較難理解的曲線生成方法就可以起到事半功倍的作用,同時又進(jìn)一步鞏固了直線知識點。曲線又可以作為后續(xù)課程中曲面的背景知識,通過介紹曲線的應(yīng)用為曲面知識點的引入作好鋪墊。
2. 1層。1層包括B樣條曲線和Bezier曲線子結(jié)點。對于這種呈并列關(guān)系的知識點,可以通過概念平移與對比,在教學(xué)中分析B樣條曲線和Bezier曲線兩個知識點的異同,并加以比照分析。例如,圖2中列出三次Bezier曲線和B樣條曲線的矩陣表達(dá)式,兩個4行4列矩陣中對應(yīng)位置不相同的數(shù)字用黑框標(biāo)出。正是由于這兩條曲線的矩陣表達(dá)式的這種細(xì)微差別,造成最終生成曲線的不同,并使其特征也各不相同。作了這種對比分析后,有利于學(xué)生對B樣條曲和Bezier曲線的深入理解。
3. 2—4層。從1層中的Bezier曲線一直到4層中的所有結(jié)點構(gòu)成了曲線結(jié)點的一棵子樹。2層中主要涵蓋了Bezier曲線中包括的知識點:常用生成算法、De Castaljau算法以及Bezier曲線特點,這些知識點又以3層和4層中的學(xué)科外知識作為支撐。常用的Bezier曲線的生成算法需要用到3層中的Bernstein基函數(shù),而基函數(shù)的概念來自于工程數(shù)學(xué),Bezier曲線又可以表示為矩陣形式,而矩陣的概念又源于線性代數(shù)。在理清了不同學(xué)科間知識點的關(guān)系后,在講授Bezier曲線的生成算法時,可以從基函數(shù)的特點引入,進(jìn)而介紹Bernstein基函數(shù),最后闡述Bezier曲線的常用生成算法,將不同學(xué)科間的知識進(jìn)行有機地融合,逐步深入到所要闡明的Bezier曲線生成算法,這可以使得教學(xué)變得富有條理性與邏輯性,同時也能使學(xué)生體會到,每一門學(xué)科不是孤立存在的,不同學(xué)科之間存在相互關(guān)系。
作為與常用Bezier曲線生成算法呈并列關(guān)系的De Castaljau算法,其理論基礎(chǔ)來自于計算數(shù)學(xué)中的遞推法,而遞推法是組合數(shù)學(xué)中的解題方法之一。在教學(xué)過程中,可以采用啟發(fā)式教學(xué)法,先通過幾個常見的遞推例子作為引子,比如數(shù)列、秦九韶算法等,啟發(fā)學(xué)生在生成Bezier曲線這類復(fù)雜問題時,不妨先從最簡單的情況入手,如圖3所示,可以按下面步驟由淺入深地解釋利用De Castaljau算法找到曲線的中點位置。
第一步:在2個控制點P0與P1的情況下,生成的Bezier曲線就是一條直線,中點位置就是直線P0P1的中點。第二步:在第一步2個控制點的基礎(chǔ)上,增加第3個控制點P2,先采用第一步的方法,分別求出直線P0P1與P1P2的中點P01與P11,然后遞推求出直線P01P11的中點P02。第三步:在第二步3個控制點的基礎(chǔ)上,增加第4個控制點P2,先采用類似于第一步和第二步的方法,分別求出直線P0P1、P1P2與P2P3的中點P01、P11與P21,接著遞推求出直線P01P11與P11P21的中點P02與P12,最后通過遞推求出直線P02與P12的中點P03。endprint
在這個求解曲線中點的例子中,從由2個控制點構(gòu)成的直線到由3個控制點構(gòu)成的Bezier曲線,一直到4個控制點構(gòu)成的Bezier曲線,不斷拓展,層層深入,將直線與曲線這2個知識點聯(lián)系起來,可以讓學(xué)生深入掌握曲線生成的一般方法,從而達(dá)到舉一反三、活學(xué)活用的教學(xué)目的。
三、合理設(shè)計多種類型實驗,強調(diào)不同學(xué)科知識的融合
在計算機圖形學(xué)教學(xué)過程中,既要注重其理論性,同時又要強調(diào)實踐性。對于課程中抽象的算法,如果沒有大量的實踐去練習(xí)的話,恐怕學(xué)生聽過就會忘記,不能形成一個感性的、直接的認(rèn)識。計算機圖形學(xué)的先修課程包括程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計等,這些計算機學(xué)科課程構(gòu)成了計算機圖形學(xué)的背景知識,但計算機圖形學(xué)又與其先修課程有很大區(qū)別,需把握的關(guān)鍵是:計算機圖形學(xué)的最終目的是通過編程來顯示圖形,當(dāng)學(xué)生實現(xiàn)算法親手編程顯示圖形后,又能讓學(xué)生體會到將抽象的算法轉(zhuǎn)換為形象化圖形的成就感,學(xué)生就會慢慢從厭煩圖形學(xué)算法的心理轉(zhuǎn)變成為迫切實現(xiàn)算法的強烈愿望。而這種成就感的培養(yǎng),主要依賴于好的實驗設(shè)計,需要我們圍繞知識點設(shè)計各種類型的實驗。在這里,我們按實驗的要求、目的和難度,設(shè)計了基礎(chǔ)實驗、綜合實驗和拓展實驗三類實驗。
1.基礎(chǔ)實驗?;A(chǔ)實驗是為了幫助學(xué)生了解和掌握一些基本算法,算法本身較為簡單,編程實現(xiàn)相對容易。學(xué)生掌握基本編程知識,具備一定的算法設(shè)計能力就能順利完成基礎(chǔ)實驗。
例如,要對多邊形進(jìn)行填充,可以采用種子填色算法:①從(x,y)開始檢測相鄰位置以確定它們是否是邊界顏色,若不是,則用填充顏色涂色,并檢測其相鄰位置。②直至檢測完所有象素。我們在講授完該算法后,就可以設(shè)計實驗:利用種子填充算法在一個三角形中涂上指定的顏色。對于這樣一個實驗,學(xué)生只需具備遞歸編程經(jīng)驗并掌握圖形顯示函數(shù)就可以順利完成該實驗。
2.綜合實驗。如果說基礎(chǔ)實驗強調(diào)的是基礎(chǔ)的話,那么綜合實驗則強調(diào)綜合,也就是要求學(xué)生能綜合運用所學(xué)的知識來完成實驗,而這里所包含的知識點既有計算機圖形學(xué),又有其他相關(guān)學(xué)科的知識,要求學(xué)生將各學(xué)科的知識點融會貫通、靈活運用。這種綜合實驗對學(xué)生的動手能力和綜合運用知識的能力都有較高要求。在設(shè)計綜合實驗時,應(yīng)盡可能地把學(xué)生已學(xué)過的知識點包含在其中,使學(xué)生在編程實現(xiàn)的過程中,把已有知識點鞏固復(fù)習(xí)一遍,當(dāng)學(xué)生最終完成作品后,就會很自然地獲得成就感。
例如,我們設(shè)計了如圖4所示的綜合實驗:要求學(xué)生利用透視變換畫出3幢高樓。如表1所示,這個綜合實驗涉及透視變換、投影和消隱等計算機圖形學(xué)學(xué)科內(nèi)的知識,又涉及坐標(biāo)變換、函數(shù)等代數(shù)及程序設(shè)計學(xué)科外的知識,通過完成這種綜合實驗,學(xué)生很自然地將學(xué)科內(nèi)、外的知識加以融合并靈活使用,從而提高其知識綜合能力。
3.拓展實驗。拓展實驗是不局限于計算機圖形學(xué)教材中原有的知識點,圍繞實驗中的特定要求,需要補充學(xué)科內(nèi)或?qū)W科外的新的知識點,或者對原有的知識加以擴充與延伸。拓展實驗設(shè)計的目的是鼓勵學(xué)有余力的學(xué)生大膽創(chuàng)新、深入實踐,激發(fā)學(xué)生對計算機圖形學(xué)乃至其他相關(guān)學(xué)科的興趣,為將來從事研究工作打下基礎(chǔ)。
在課堂教學(xué)中,許多學(xué)生對于自然界中不存在的,只能通過人工生成的分形圖形非常感興趣,我們就設(shè)計了這樣的拓展實驗:繪制基于分形的自然景物圖,這道拓展實驗題目中,融合了教材中未加以展開的分形理論,重點是分形圖形的建模方法,這部分屬于學(xué)科外的知識,在課堂教學(xué)與教材中都未加以展開說明。學(xué)有余力的學(xué)生可以通過課外時間去自學(xué)相關(guān)的分形圖形生成方法,再結(jié)合計算機圖形學(xué)中的相關(guān)知識完成。隨著移動終端的廣泛使用,甚至可以要求學(xué)生將這樣的拓展實驗利用JAVA語言在手機終端完成,并通過微信群發(fā)布。這樣,將主流的開發(fā)技術(shù)與計算機圖形學(xué)學(xué)科知識做到有機融合,可以培養(yǎng)學(xué)生的創(chuàng)新性思維。
四、相關(guān)教學(xué)成果
筆者在計算機圖形學(xué)的教學(xué)實踐中不斷開拓創(chuàng)新,打破學(xué)科壁壘,將圖形學(xué)知識與多學(xué)科知識加以融合,啟迪學(xué)生在學(xué)習(xí)圖形學(xué)知識時,不拘泥于本學(xué)科領(lǐng)域知識,鼓勵學(xué)生在交叉學(xué)科領(lǐng)域有所拓展。例如,2016屆計算機系吳慶帆同學(xué)通過圖形學(xué)課程的學(xué)習(xí),對圖形圖像領(lǐng)域產(chǎn)生濃厚的興趣,進(jìn)而主攻機器學(xué)習(xí)領(lǐng)域,完成的“基于MXNet深度學(xué)習(xí)框架的圖像分類軟件的實現(xiàn)”畢業(yè)論文被評為校優(yōu)秀畢業(yè)論文,目前他在美國約翰霍普金斯大學(xué)攻讀碩士學(xué)位;2017屆計算機系陳祖凱同學(xué)在學(xué)習(xí)計算機圖形學(xué)課程后,不斷研究相關(guān)圖形學(xué)算法,獲得上海市大學(xué)生創(chuàng)新活動項目,他已被上海交通大學(xué)計算機系錄取繼續(xù)攻讀碩士學(xué)位。
五、結(jié)語
筆者長期從事計算機圖形學(xué)的教學(xué)工作,通過在理論與實驗教學(xué)中不斷發(fā)現(xiàn)問題,總結(jié)經(jīng)驗,已系統(tǒng)地為計算機圖形學(xué)課程中的各重要知識點分別構(gòu)建了“樹型”知識結(jié)構(gòu),并設(shè)計了完整的基礎(chǔ)實驗、綜合實驗和拓展實驗,在教學(xué)過程中,鼓勵學(xué)生將學(xué)科內(nèi)外知識加以融合、靈活運用,幫助學(xué)生建立起更為全面、寬廣的知識體系。今后,我們將以學(xué)科內(nèi)外知識融合的角度看待所講授的其他專業(yè)課程,在理論與實驗教學(xué)兩方面做進(jìn)一步的探索研究。
參考文獻(xiàn):
[1]孫家廣,胡事民.計算機圖形學(xué)基礎(chǔ)教程[M].北京:清華大學(xué)出版社,2005.
[2]傅向華,周虹.加強能力培養(yǎng)的“計算機圖形學(xué)”實驗教學(xué)改革[J].計算機教育,2012,(23):94-97.
[3]徐崗,許金蘭,陳臨強,等.數(shù)學(xué)建模驅(qū)動的“計算機圖形學(xué)”課堂教學(xué)模式改革[J].中國信息技術(shù)教育,2016,(6):89-91.
[4]李丹,袁凌,胡迎松,等.計算機圖形學(xué)的遷移學(xué)習(xí)實踐教學(xué)模型[J].電氣電子教學(xué)學(xué)報,2015,(5):51-54.
[5]劉晉鋼,孔令德,王進(jìn)忠.“計算機圖形學(xué)”課程新教學(xué)模式的研究與實踐[J].計算機教育,2010,(3):63-65.
[6]孫劍斌,張朋柱.基于知識網(wǎng)絡(luò)的科研人員知識結(jié)構(gòu)可視化[J].情報科學(xué),2010,(3):395-399.endprint