圖書簡介
精品課程“計算機圖形學”的建設成果,本書採用面向對象語言Visual C++ 6.0的MFC框架作為開發平台,系統地講解“基本圖形的掃描轉換”、“多邊形填充”、“二維變換與裁剪”、“三維變換與投影”、“自由曲線與曲面”、“分形幾何”、“建模與消隱”和“真實感圖形”的實現原理及算法。
本書以生成真實感光照模型為主線,引導讀者重點掌握直線的掃描轉換原理、多邊形的填充原理、三維物體的幾何變換與透視投影原理、光滑曲面的建模與深度緩衝動態隱面原理、Gouraud雙線性光強插值與Phong雙線性法矢插值原理、圖像紋理與幾何紋理映射原理、基於簡單光照模型、簡單透明模型與簡單陰影模型的真實感圖形繪製等原理。系統學習完本書後,讀者可以在簡單光照模型場景中渲染出光源與材質互動作用的真實感三維物體,同時支持滑鼠與鍵盤的互動操作,為進一步從事遊戲開發奠定理論基礎。
圖書前言
筆者花費了七年多時間,打造了“省級精品課程+系列化教材+數位化教學資源”立體化圖形學教學平台。2006年建設完成山西省省級精品課程“C++程式設計”後,直接基於Visual C++中的MFC框架,採用案例化教學方法建設了“計算機圖形學”教學資源。2008年筆者主持的“計算機圖形學”課程被評為山西省省級精品課程之後,出版了《計算機圖形學基礎教程(Visual C++版)》、《計算機圖形學實踐教程(Visual C++版)》兩本教材,並雙雙獲得兵工高校優秀教材一等獎,隨後相繼出版了《計算機圖形學基礎教程(Visual C++版)習題解答與編程實踐》、《計算機圖形學實驗及課程設計(Visual C++版)》等系列教材,其中《計算機圖形學實踐教程(Visual C++版)》提供了與《計算機圖形學基礎教程(Visual C++版)》中所講解原理一一對應的案例,總計43個案例。這些案例被國內的近百所院校試用後,給予了肯定。下面某高校教師對本書的評價:
“教材提供了豐富的教學資源,涵蓋了計算機圖形學原理的主要知識點,由於採用VC++的MFC編程可以模擬真實感光照以及紋理等效果,對學生很有吸引力,對提升計算機圖形學的教學效果也很有幫助。原理的案例化可以讓學生面對枯燥的圖形數學模型及繪製算法,能儘快直觀地體驗到真實效果並深刻理解繪製算法的原理”.
圖書目錄
第1章 導論1
1.1 計算機圖形學的套用領域1
1.1.1 計算機遊戲1
1.1.2 計算機輔助設計1
1.1.3 計算機藝術2
1.1.4 虛擬現實4
1.1.5 計算機輔助教學5
1.2 計算機圖形學的概念5
1.3 計算機圖形學的相關學科6
1.4 計算機圖形學的確立與發展6
1.5 圖形顯示器的發展及其工作原理8
1.5.1 陰極射線管8
1.5.2 隨機掃描顯示器9
1.5.3 直視存儲管顯示器9
1.5.4 光柵掃描顯示器10
1.5.5 液晶顯示器15
1.5.6 三維圖形顯示原理及立體顯示器16
1.6 圖形軟體標準18
1.7 計算機圖形學研究的熱點技術19
1.7.1 層次細節技術19
1.7.2 圖像繪製技術20
1.8 本章小結21
習題121第2章 MFC繪圖基礎25
2.1 面向對象程式設計基礎25
2.1.1 類和對象25
2.1.2 構造函式與析構函式26
2.1.3 對象的動態建立與釋放32
2.1.4 繼承與派生37
2.2 MFC上機操作步驟40
2.3 MFC基本繪圖函式43
2.3.1 CDC類結構與GDI對象43
2.3.2 映射模式48
2.3.3 使用GDI對象51
2.3.4 CDC類繪圖成員函式56
2.3.5 雙緩衝機制79
2.3.6 設備上下文的調用與釋放80
2.3.7 MFC繪圖的幾種方法81
2.4 本章小結84
習題284第3章 基本圖形的掃描轉換88
3.1 直線的掃描轉換88
3.1.1 算法原理89
3.1.2 構造中點誤差項90
3.1.3 遞推公式90
3.1.4 繪製任意斜率的直線91
3.2 圓的掃描轉換95
3.2.1 算法原理95
3.2.2 構造中點誤差項97
3.2.3 遞推公式97
3.3 橢圓的掃描轉換98
3.3.1 算法原理98
3.3.2 構造上半部分I的中點誤差項99
3.3.3 上半部分I的遞推公式100
3.3.4 構造下半部分II的中點誤差項100
3.3.5 下半部分II的遞推公式101
3.4 反走樣技術102
3.5 Wu反走樣算法104
3.5.1 算法原理104
3.5.2 構造距離誤差項105
3.5.3 計算機化106
3.5.4 彩色直線段的反走樣106
3.6 本章小結106
習題3107第4章 多邊形填充110
4.1 多邊形的掃描轉換110
4.1.1 多邊形的定義111
4.1.2 多邊形的表示112
4.1.3 多邊形著色模式112
4.1.4 填充多邊形113
4.1.5 填充區域114
4.2 有效邊表填充算法114
4.2.1 填充原理114
4.2.2 邊界像素的處理原則115
4.2.3 有效邊與有效邊表117
4.2.4 桶表與邊表120
4.3 邊緣填充算法121
4.3.1 填充原理121
4.3.2 填充過程121
4.4 區域填充算法122
4.4.1 填充原理122
4.4.2 四鄰接點與八鄰接點123
4.4.3 四連通域與八連通域123
4.4.4 種子填充算法124
4.4.5 掃描線種子填充算法125
4.5 本章小結126
習題4126第5章 二維變換與裁剪130
5.1 圖形幾何變換基礎130
5.1.1 規範化齊次坐標131
5.1.2 矩陣相乘131
5.1.3 二維幾何變換矩陣131
5.1.4 物體變換與坐標變換132
5.1.5 二維幾何變換形式132
5.2 二維圖形基本幾何變換矩陣132
5.2.1 平移變換矩陣133
5.2.2 比例變換矩陣133
5.2.3 旋轉變換矩陣134
5.2.4 反射變換矩陣134
5.2.5 錯切變換矩陣135
5.3 二維複合變換137
5.3.1 複合變換原理137
5.3.2 相對於任意參考點的二維幾何變換137
5.3.3 相對於任意方向的二維幾何變換138
5.4 二維圖形裁剪140
5.4.1 圖形學中常用的坐標系140
5.4.2 視窗與視區143
5.4.3 窗視變換矩陣143
5.5 Cohen-Sutherland直線段裁剪算法145
5.5.1 編碼原理145
5.5.2 裁剪步驟146
5.5.3 交點計算公式147
5.6 中點分割直線段裁剪算法148
5.6.1 中點分割算法原理148
5.6.2 中點計算公式148
5.7 Liang-Barsky直線段裁剪算法149
5.7.1 Liang-Barsky裁剪算法原理149
5.7.2 算法分析150
5.7.3 算法的幾何意義150
5.8 多邊形裁剪算法152
5.9 本章小結154
習題5154第6章 三維變換與投影157
6.1 三維圖形幾何變換157
6.1.1 三維幾何變換矩陣157
6.1.2 三維幾何變換形式157
6.2 三維基本幾何變換矩陣158
6.2.1 平移變換158
6.2.2 比例變換158
6.2.3 旋轉變換159
6.2.4 反射變換160
6.2.5 錯切變換161
6.3 三維複合變換162
6.3.1 相對於任意參考點的三維幾何變換162
6.3.2 相對於任意方向的三維幾何變換162
6.4 坐標系變換164
6.4.1 二維坐標系變換165
6.4.2 三維坐標系變換165
6.5 平行投影167
6.5.1 正交投影矩陣167
6.5.2 三視圖168
6.5.3 斜投影171
6.6 透視投影173
6.6.1 透視變換坐標系173
6.6.2 世界坐標繫到觀察坐標系的變換174
6.6.3 觀察坐標繫到螢幕坐標系的變換178
6.6.4 透視投影分類180
6.5.5 螢幕坐標系的透視深度坐標183
6.7 本章小結185
習題6186第7章 自由曲線與曲面189
7.1 基本概念189
7.1.1 曲線與曲面的表示形式189
7.1.2 插值與逼近190
7.1.3 連續性條件190
7.2 Bezier曲線191
7.2.1 Bezier曲線的定義192
7.2.2 Bernstein基函式的性質194
7.2.3 Bezier曲線的性質194
7.2.4 de Casteljau遞推算法197
7.2.5 Bezier曲線的拼接198
7.3 Bezier曲面200
7.3.1 Bezier曲面的定義200
7.3.2 雙三次Bezier曲面的定義201
7.3.3 雙三次Bezier曲面的拼接202
7.4 B樣條曲線203
7.4.1 B樣條曲線的定義204
7.4.2 二次B樣條曲線204
7.4.3 三次B樣條曲線205
7.4.4 B樣條曲線的性質207
7.4.5 構造特殊的三次B樣條曲線的技巧209
7.5 B樣條曲面210
7.5.1 B樣條曲面的定義210
7.5.2 雙三次B樣條曲面的定義211
7.5.3 雙三次B樣條曲面的連續性212
7.6 本章小結214
習題7214第8章 分形幾何218
8.1 分形與分維218
8.1.1 分形的誕生218
8.1.2 分形的基本特徵219
8.1.3 分形的定義220
8.1.4 分形維數的定義221
8.2 遞歸模型222
8.2.1 Cantor集223
8.2.2 Koch曲線223
8.2.3 Peano-Hilbert曲線225
8.2.4 Sierpinski墊片與地毯228
8.2.5 Menger海綿230
8.2.6 C字曲線233
8.2.7 Cayley樹234
8.3 L系統模型235
8.3.1 L系統文法構圖法235
8.3.2 Koch曲線236
8.3.3 分形草237
8.3.4 Peano-Hilbert曲線238
8.3.5 分形灌木叢238
8.4 IFS疊代函式系統模型240
8.4.1 仿射變換240
8.4.2 IFS242
8.4.3 Koch曲線244
8.4.4 Sierpinski墊片246
8.4.5 Barnsley蕨248
8.4.6 拼貼與IFS碼的確定248
8.5 本章小結250
習題8250第9章 建模與消隱256
9.1 三維物體的數據結構256
9.1.1 物體的幾何信息與拓撲信息256
9.1.2 三表結構257
9.1.3 物體的描述模型258
9.1.4 雙表結構259
9.1.5 常用物體的幾何模型261
9.2 消隱算法分類274
9.3 隱線算法274
9.3.1 凸多面體消隱算法274
9.3.2 曲面體消隱算法277
9.4 隱面算法278
9.4.1 深度緩衝器算法278
9.4.2 深度排序算法282
9.5 本章小結283
習題9284第10章 真實感圖形289
10.1 顏色模型289
10.1.1 原色系統290
10.1.2 RGB顏色模型291
10.1.3 HSV顏色模型292
10.1.4 CMYK顏色模型293
10.2 簡單光照模型294
10.2.1 材質模型295
10.2.2 環境光模型296
10.2.3 漫反射光模型296
10.2.4 鏡面反射光模型297
10.2.5 光強衰減299
10.2.6 增加顏色299
10.3 光滑著色302
10.3.1 直線的光滑著色302
10.3.2 Gouraud明暗處理303
10.3.3 Phong明暗處理306
10.4 簡單透明模型307
10.5 陰影模型309
10.6 紋理映射310
10.6.1 顏色紋理311
10.6.2 三維紋理320
10.6.3 幾何紋理321
10.6.4 簡單紋理反走樣324
10.7 本章小結326
習題10326附錄A 配套實踐教程的案例設定及與本書的對應關係332參考文獻335