讀者對象:不僅可以作為學(xué)習(xí)《計算機圖形學(xué)基礎(chǔ)教程 (Visual C++版) (第2版)》的輔助教材, 也可作為上機實踐教材, 還可供從事游戲開發(fā)的程序員自學(xué)使用
《高等學(xué)校計算機專業(yè)教材精選·圖形圖像與多媒體技術(shù):計算機圖形學(xué)實踐教程(Visual C++版)(第2版)》是《計算機圖形學(xué)基礎(chǔ)教程(Visual C++版)(第2版)》的姊妹篇。編寫原則是將計算機圖形學(xué)的基本原理與其體編程實踐相結(jié)合起來。本書選用面向?qū)ο蟪绦蛟O(shè)計語言Visual C++6.O的MFC框架作為開發(fā)平臺,可以更好地展示真彩色以及對圖形的交互式操作。
《高等學(xué)校計算機專業(yè)教材精選·圖形圖像與多媒體技術(shù):計算機圖形學(xué)實踐教程(Visual C++版)(第2版)》共給出60個案例,內(nèi)容包括直線中點Bresenham算法、多邊形有效邊表填充算法、三維圖形幾何變換算法、透視投影算法、地理劃分球面動態(tài)隱線算法、Z-Buffer算法、球面光源和材質(zhì)交互算法、球面Phong明暗處理算法、簡單透明模型算法、簡單陰影算法、立方體圖像紋理映射算法、圓環(huán)面圖像紋理映射算法、三維紋理映射算法、球面幾何紋理映射反走樣算法等。
《高等學(xué)校計算機專業(yè)教材精選·圖形圖像與多媒體技術(shù):計算機圖形學(xué)實踐教程(Visual C++版)(第2版)》的所有案例全部由筆者獨立開發(fā),具有自主知識產(chǎn)權(quán)。在第1版的基礎(chǔ)上新增了Sutherland Hodgman多邊形裁剪算法、球面光源與材質(zhì)交互算法、簡單透明模型算法、簡單陰影算法、三維紋理映射算法、球面幾何紋理映射反走樣算法等案例,豐富了計算機圖形學(xué)精品課程的建設(shè)內(nèi)容。
本書使用類結(jié)構(gòu)編寫,代碼統(tǒng)一,注釋規(guī)范,讀者可以很容易地按照本書提供的源程序開發(fā)自己的圖形學(xué)作品。
本書不僅可以作為學(xué)習(xí)《計算機圖形學(xué)基礎(chǔ)教程(Visual C++版)(第2版)》的輔助教材,也可作為上機實踐教材,還可供從事游戲開發(fā)的程序員自學(xué)使用。
《高等學(xué)校計算機專業(yè)教材精選·圖形圖像與多媒體技術(shù):計算機圖形學(xué)實踐教程(Visual C++版)(第2版)》給出60個案例,內(nèi)容包括直線中點Bresenham算法、多邊形有效邊表填充算法、三維圖形幾何變換算法、透視投影算法、地理劃分球面動態(tài)隱線算法、Z-Buffer算法、球面光源和材質(zhì)交互算法、球面Phong明暗處理算法、簡單透明模型算法、簡單陰影算法、立方體圖像紋理映射算法、圓環(huán)面圖像像紋理映射算法、三維紋理映射算法、球面幾何紋理映射反走樣算法等的實現(xiàn)步驟,并提供了全部源代碼! 陡叩葘W(xué)校計算機專業(yè)教材精選·圖形圖像與多媒體技術(shù):計算機圖形學(xué)實踐教程(Visual C++版)(第2版)》使用類架構(gòu)編寫,包括基礎(chǔ)類、變換類、消隱類、渲染類等,采用“搭積本”的方式構(gòu)造了三維光照場景,讀者只要修改物體的數(shù)據(jù)結(jié)構(gòu)(點表與面表)就可以繪制出真實感圖形;A(chǔ)類包括二維點類CP2、二維紋理類CT2、三維點類CP3、三維紋理CT3、表面類CFace、顏色類CRGB、矢量類CVector等,使用基礎(chǔ)類可以完成物體的基礎(chǔ)設(shè)置。CTransform變換類可以對物體實施二維或三維變換。CZbuffer消隱類可以對表面模型進行深度消隱。渲染類包括材質(zhì)類CMaterial、光源類CLiglit、光照類CLighting等。綜合使用以上類可以完全實現(xiàn)本書的姊妹篇《計算機圖形學(xué)基礎(chǔ)教程(VisualC++版)(第2版)》中講解的所有計算機圖形學(xué)原理。綜合本書的所有案例,相當(dāng)于為讀者提供了一個使用MFC開發(fā)的小型“OpenGL”,引導(dǎo)讀者從零開始逐步掌握機算機圖形學(xué)原理與編程實現(xiàn)方法。
本書是《計算機圖形學(xué)基礎(chǔ)教程(Visual C++版)(第2版)》配套的實踐教程。對于主教材中講解的每個原理,本書均給出了配套的算法實現(xiàn)源代碼!队嬎銠C圖形學(xué)基礎(chǔ)教程(Visual C++版)(第2版)》完善了光照模型、新增了簡單透明模型、簡單陰影模型以及圖像紋理與幾何紋理等內(nèi)容。相應(yīng)地,本書增加了球面Phong明暗處理、簡單透明模型、簡單陰影、立方體函數(shù)紋理映射、長方體圖像紋理映射、圓柱面圖像紋理映射、圓環(huán)面圖像紋理映射、三維紋理映射、球面幾何紋理映射、球面幾何紋理映射反走樣等算法,共計60個案例。60個案例的源代碼使用類的架構(gòu)建設(shè),教師每講解完一個原理就定義一個類,該類可以包含到后續(xù)案例中使用,不必每個案例都從零開始建設(shè)。本書提供的主要原理級類模塊包括:CLine直線類、CALine反走樣直線類、CFill有效邊表填充類、CTransform幾何變換類、CZBuffer深度緩沖類、CMaterial材質(zhì)類、CLight光源類、CLighting光照類等。為了支持原理類的運行,定義了一些必要的基礎(chǔ)類,具體包括:CP2二維點類、CP3三維點類、CFace表面類、CVector矢量類和CRGB顏色類等;谝陨项惸K,讀者可以學(xué)會對物體施加光照,改變材質(zhì)或進行紋理映射。在場景中使用鼠標(biāo)、鍵盤來旋轉(zhuǎn)物體或按下“動畫”圖標(biāo)按鈕來播放物體旋轉(zhuǎn)的動畫,基本達到OpenGL或3ds max渲染的圖形效果。
本書使用“案例需求”、“案例分析”、“算法設(shè)計”、“案例設(shè)計”和“案例總結(jié)”的五部曲編寫,講解清晰、注釋清晰。筆者在個人網(wǎng)站:http://www.klingde.com上提供了全部60個案例源代碼,供讀者教學(xué)之用。每個案例都經(jīng)過了嚴(yán)格測試,讀者只要編譯、連接、運行就可以看到動畫效果。筆者對該網(wǎng)站所提供的案例源代碼享有著作權(quán),請讀者一起維護知識產(chǎn)權(quán)。感謝國內(nèi)高校教師對筆者第1版中43個案例的肯定,敬請教學(xué)一線的計算機圖形教師對本書提供的案例提出寶貴的修改建議。筆者E-mail: klingde@163.com, QQ: 997796978.
本書得到2011年山西省重點教改項目“圖形圖像處理系列課程實踐教學(xué)資源與平臺的建設(shè)”的資助。本書所提供的60個實踐教學(xué)資源已經(jīng)于2012年底榮獲山西省教學(xué)成果一等獎,獲獎項目名稱為:計算機圖形學(xué)實踐教學(xué)資源庫的建設(shè)。
孔令德2012年10月第1版前言
計算機圖形學(xué)是交互式圖形開發(fā)的基本理論,同時也是一門實踐性的學(xué)科。筆者積累了十多年的計算機圖形學(xué)講授經(jīng)驗,使用Visual C++6.0的MFC框架開發(fā)了涉及“基本圖形的掃描轉(zhuǎn)換”、“多邊形填充”、“二維變換和裁剪”、“三維變換和投影”、“自由曲線和曲面”、“分形幾何”、“動態(tài)消隱”和“真實感圖形”等章節(jié)內(nèi)容的43個案例。
本書是《計算機圖形學(xué)基礎(chǔ)教程(Visual C++版)》(ISBN 978-7-302-17082-2)的配套實踐教程。對于Visual C++的MFC框架,本書從使用者的角度進行了詳細操作說明。本書的程序給出了*.h文件和*.cpp文件,算法編寫規(guī)范,注釋清晰,讀者可以很容易地按照本書提供的源程序一步一步地完成上機實踐。
學(xué)習(xí)完本書,讀者可以建立三維場景,對形體施加光照,改變材質(zhì)或?qū)崿F(xiàn)紋理映射。在場景中使用鼠標(biāo)、鍵盤來控制形體的旋轉(zhuǎn)和動畫,基本達到OpenGL或3DS生成的圖形效果。
本書中有許多案例是筆者工作的基礎(chǔ),如有效邊表填充算法、透視投影變換、Gouraud明暗處理、Z-Buffer消隱算法和光照模型等,希望讀者認(rèn)真體會和理解。
筆者負(fù)責(zé)主持山西省精品課程“C++程序設(shè)計”和院級精品課程“計算機圖形學(xué)”,本書是面向?qū)ο笳Z言和計算機圖形學(xué)原理相結(jié)合形成的產(chǎn)物,是筆者十多年教學(xué)科研工作成果的總結(jié)。
孔令德
案例1 金剛石圖案算法
案例2 直線中點Bresenham算法
案例3 圓中點Bresenham算法
案例4 橢圓中點Bresenham算法
案例5 Wu反走樣直線算法
案例6 多邊形有效邊表填充算法
案例7 多邊形邊緣填充算法
案例8 四鄰接點種子填充算法
案例9 區(qū)域八鄰接點種子填充算法
案例10 掃描線種子填充算法
案例11 二維圖形幾何變換算法
案例12 Cohen-Sutherland直線段裁剪算法
案例13 中點分割直線段裁剪算法
案例14 Liang-Barsky直線段裁剪算法
案例15 Sutherland-Hodgman多邊形裁剪算法
案例16 三維圖形幾何變換算法
案例17 正交投影算法
案例18 三視圖算法
案例19 透視投影算法
案例20 n次Bczier曲線方程算法
案例21 n次Bezier曲線de Casteljau算法
案例22 雙三次Bezier曲面算法
案例23 三次B樣條曲線算法
案例24 雙三次B樣條曲面算法
案例25 Cantor集算法
案例26 Koch曲線算法
案例27 Peano-Hilbert曲線算法
案例28 Sierpinski墊片算法
案例29 Sierpinski地毯算法
案例30 Mcnger海綿算法
案例31 C字曲線算法
案例32 Cayley樹算法
案例33 Koch曲線L系統(tǒng)模型算法
案例34 分形草L系統(tǒng)模型算法
案例35 Peano-Hilbert曲線L系統(tǒng)模型算法
案例36 灌木叢L系統(tǒng)模型算法
案例37 Koch曲線IFS算法
案例38 正二十面體動態(tài)隱線算法
案例39 地理劃分球面動態(tài)隱線算法
案例40 遞歸劃分球面動態(tài)隱線算法
案例41 圓柱面動態(tài)隱線算法
案例42 圓錐面動態(tài)隱線算法
案例43 圓環(huán)面動態(tài)隱線算法
案例44 Z-Buffer算法
案例45 畫家算法
案例46 原色系統(tǒng)算法
案例47 顏色漸變立方體線框模型算法
案例48 RGB顏色模型算法
案例49 HSV顏色模型算法
案例50 球面光源與材質(zhì)交互算法
案例51 球面Phong明暗處理算法
案例52 簡單透明模型算法
案例53 簡單陰影算法
案例54 立方體函數(shù)紋理映射算法
案例55 長方體圖像紋理映射算法
案例56 圓柱面圖像紋理映射算法
案例57 圓環(huán)面圖像紋理映射算法
案例58 三維紋理映射算法
案例59 球面幾何紋理映射算法
案例60 球面幾何紋理反走樣算法
參考文獻