內容簡介
本書是
普通高等教育“十一五”國家級規劃教材。全書共10章,第1章簡要介紹計算機圖形學的基本概念、套用和發展動態。第2~5章由“外”到“內”介紹計算機圖形處理系統的硬體設備、人囑笑囑機互動處理技術、圖形頸廈盼對象在計算機內的表示以及基本圖形的生成算法等。第6章主要介紹二維變換和二維觀察的概念。第7章介紹三維變換及三維觀察的基本內容,包括幾何變換和投影變換等。第8章介紹曲線和曲面的生成。第9章簡要介紹常用的消隱算法。第10章對真實感圖形繪製的基本思想做了簡單描述。本書內容全面翔實,概念簡明清晰,實例豐富實用。配套教學資源,包含教學大綱、電子課件和相關教學編程實例等,可免費下載。本書可作為高等學校計算機等相關專業本科生教材和科技人員參考書。
圖書目錄
目 錄
第1章 緒論 1
1.1 計算機圖形學及其相關概念 1
1.2 計算機圖形學的發展 2
1.2.1 計算機圖形學學科的發展 2
1.2.2 圖形硬體設備的發展 3
1.2.3 圖形軟體的發展 4
1.3 計算墊譽趨立機圖匙燥潤形學的套用 4
1.3.1 計算機輔助設計與製造 4
1.3.2 計算機輔助繪圖 5
1.3.3 計算機輔助教學 5
1.3.4 辦公自動化和電子出版技術 5
1.3.5 計算機藝射章辯拔術 6
1.3.6 在工業控制及交通方面的套用 6
1.3.7 在醫療衛生方面的套用 6
1.4 計算機圖形學研究閥料動態 7
1.4.1 計算機動畫 7
1.4.2 地理信息系統 8
1.4.3 人機互動 9
1.4.4 真實感圖形顯示 10
1.4.5 虛擬現實 10
1.4.7 並行圖形處理 13
習題1 13
第2章 計算機圖形系統及圖形硬體 15
2.1 計算機圖形系統概述 15
2.1.1 計算機圖形系統的功能 15
2.1.2 計算機圖形系統的結構 16
2.2 圖形輸入設備 18
2.2.1 鍵盤 18
2.2.2 滑鼠器 19
2.2.3 光筆 19
2.2.4 觸控螢幕 20
2.2.5 操縱桿 20
2.2.6 跟蹤球和空間球 20
2.2.7 數據手套 21
2.2.8 數位化儀 21
2.2.9 圖像掃瞄器 22
2.2.10 聲頻輸入系統 22
2.2.11 視頻輸入系統 23
2.3 圖形顯示設備 23
2.3.2 CRT圖形顯示器 27
2.3.4 三維觀察設備 33
2.4 圖形顯示子系統 34
2.4.1 光柵掃描圖形顯示子系統的結構 34
2.4.2 繪製流水線 36
2.4.3 相關概念 37
2.5 圖形硬拷貝設備 40
2.5.1 印表機 40
2.5.2 繪圖儀 41
2.6 OpenGL圖形軟體包 41
2.6.1 OpenGL的主要功能 42
2.6.2 OpenGL的繪製流程 42
2.6.3 OpenGL的基本語法 43
2.6.4 一個漏蜜葛完整的OpenGL程式 44
習題2 47
第3章 用戶接口與互動式技術 48
3.1 用戶接口設計 48
3.1.1 用戶模型 48
3.1.2 顯示螢幕的有效利用 48
3.1.3 反饋 49
3.1.5 減少記憶量 50
3.1.6 回退和出錯處理 51
3.1.7 在線上幫助 51
3.1.8 視覺效果設計 51
3.1.9 適應不同的用戶 52
3.2 邏輯輸入設備與輸入處理 52
3.2.1 邏輯輸入設備 52
3.2.2 輸入模式 55
3.3 互動式繪圖技術 56
3.3.1 基本互動式繪圖技術 56
3.3.2 三維互動技術 58
3.4 OpenGL中橡皮筋技術的實現 59
3.4.1 基於滑鼠的實現 60
3.4.2 基於鍵盤的實現 62
3.5 OpenGL中拾取操作的實現 63
3.6 OpenGL的選單功能 67
習題3 68
第4章 圖形的表示與數據結構 69
4.1 基本概念 69
4.1.1 基本圖形元素 69
4.1.2 幾何信息與拓撲信息 70
4.1.3 坐標系 71
4.1.4 實體的定義 73
4.1.5 正則集合運算 74
4.1.6 平面多面體與歐拉公式 76
4.2 三維形體的表示 77
4.2.1 多邊形表面模型 78
4.2.2 掃描表示 81
4.2.3 構造實體幾何法 81
4.2.4 空間位置枚舉表示 83
4.2.5 八叉樹 84
4.2.6 BSP樹 85
4.2.7 OpenGL中的實體模型函式 85
4.3 非規則對象的表示 90
4.3.1 分形幾何 90
4.3.2 形狀語法 92
4.3.3 粒子系統 93
4.3.4 基於物理的建模 93
4.3.5 數據場的可視化 93
4.4 層次建模 94
4.4.1 段與層次建模 94
4.4.2 層次模型的實現 95
4.4.3 OpenGL中層次模型的實現 96
習題4 98
第5章 基本圖形生成算法 99
5.1 直線的掃描轉換 99
5.1.3 Bresenham算法 103
5.2 圓的掃描轉換 105
5.2.1 八分法畫圓 105
5.2.2 中點Bresenham畫圓算法 106
5.3 橢圓的掃描轉換 107
5.3.1 橢圓的特徵 108
5.3.2 橢圓的中點Bresenham算法 109
5.4 多邊形的掃描轉換與區域填充 112
5.4.1 多邊形的掃描轉換 112
5.4.2 邊緣填充算法 116
5.4.3 區域填充 118
5.4.4 其他相關概念 122
5.5 字元處理 123
5.5.1 點陣字元 123
5.5.2 矢量字元 124
5.6 屬性處理 124
5.6.1 線型和線寬 124
5.6.2 字元的屬性 127
5.6.3 區域填充的屬性 127
5.7 反走樣 128
5.7.1 過取樣 129
5.7.2 簡單的區域取樣 130
5.7.3 加權區域取樣 131
5.8 在OpenGL中繪製圖形 132
5.8.1 點的繪製 132
5.8.2 直線的繪製 133
5.8.3 多邊形面的繪製 134
5.8.4 OpenGL中的字元函式 138
5.8.5 OpenGL中的反走樣 139
習題5 141
第6章 二維變換及二維觀察 143
6.1 基本概念 143
6.2 基本幾何變換 144
6.2.1 平移變換 144
6.2.2 比例變換 145
6.2.3 旋轉變換 146
6.2.4 對稱變換 146
6.2.5 錯切變換 148
6.2.6 二維圖形幾何變換的計算 149
6.3 複合變換 150
6.3.1 二維複合平移變換和比例變換 150
6.3.2 二維複合旋轉變換 150
6.3.4 其他二維複合變換 151
6.3.6 相對於任意方向的二維幾何變換 152
6.3.7 坐標系之間的變換 153
6.3.8 光柵變換 154
6.3.9 變換的性質 155
6.4 二維觀察 156
6.4.1 基本概念 156
6.4.2 用戶坐標繫到觀察坐標系的變換 158
6.4.3 視窗到視區的變換 158
6.5 裁剪 159
6.5.1 點的裁剪 160
6.5.2 直線段的裁剪 160
6.5.3 多邊形的裁剪 166
6.5.4 其他裁剪 169
6.6 OpenGL中的二維觀察變換 170
習題6 172
第7章 三維變換及三維觀察 173
7.1 三維變換的基本概念 173
7.1.1 幾何變換 173
7.1.2 三維齊次坐標變換矩陣 173
7.1.3 平面幾何投影 174
7.2 三維幾何變換 175
7.2.1 三維基本幾何變換 175
7.2.2 三維複合變換 180
7.3 三維投影變換 183
7.3.1 正投影 183
7.3.2 斜投影 189
7.4 透視投影 190
7.4.1 一點透視 192
7.4.2 二點透視 193
7.4.3 三點透視 194
7.5 觀察坐標系及觀察空間 195
7.5.1 觀察坐標系 195
7.5.2 觀察空間 196
7.6 三維觀察流程 199
7.6.1 用戶坐標繫到觀察坐標系的變換 200
7.6.2 平行投影的規範化投影變換 200
7.6.3 透視投影的規範化投影變換 202
7.7 三維裁剪 205
7.7.1 關於規範化觀察空間的裁剪 205
7.7.2 齊次坐標空間的裁剪 206
7.8 OpenGL中的變換 207
7.8.1 矩陣堆疊 207
7.8.2 模型視圖變換 208
7.8.3 投影變換 209
7.8.4 實例 211
習題7 213
第8章 曲線與曲面 215
8.1 基本概念 215
8.1.1 曲線/曲面數學描述的發展 215
8.1.2 曲線/曲面的表示要求 216
8.1.3 曲線/曲面的表示 217
8.1.4 插值與逼近 218
8.1.5 連續性條件 218
8.1.6 樣條描述 219
8.2 三次樣條 220
8.2.1 自然三次樣條 220
8.2.2 Hermite插值樣條 221
8.3.1 Bezier曲線的定義 223
8.3.2 Bezier曲線的性質 224
8.3.3 Bezier曲線的生成 226
8.3.4 Bezier曲面 229
8.4 B樣條曲線/曲面 230
8.4.2 B樣條曲線的性質 235
8.4.3 B樣條曲面 237
8.5 有理樣條曲線/曲面 237
8.5.1 NURBS曲線/曲面的定義 238
8.5.2 有理基函式的性質 239
8.5.3 NURBS曲線/曲面的特點 240
8.6 曲線/曲面的轉換和計算 241
8.6.1 樣條曲線/曲面的轉換 241
8.6.2 樣條曲線/曲面的離散生成 242
8.7 OpenGL生成曲線/曲面 244
8.7.1 Bezier曲線/曲面函式 244
8.7.2 GLU中的B樣條曲線/曲面函式 247
習題8 252
第9章 消隱 253
9.1 深度快取器算法 253
9.2 區間掃描線算法 255
9.3 深度排序算法 257
9.4 區域細分算法 258
9.5 光線投射算法 260
9.6 BSP樹 260
9.7 多邊形區域排序算法 261
9.8 OpenGL中的消隱處理 262
習題9 267
第10章 真實感圖形繪製 268
10.1 簡單光照模型 268
10.1.1 環境光 268
10.1.2 漫反射光 269
10.1.3 鏡面反射光 270
10.1.4 光強衰減 271
10.1.5 顏色 272
10.2 基於簡單光照模型的多邊形繪製 273
10.2.1 恆定光強的多邊形繪製 274
10.2.2 Gouraud明暗處理 274
10.2.3 Phong明暗處理 276
10.3 透明處理 277
10.4 產生陰影 278
10.5 模擬景物表面細節 278
10.5.1 用多邊形模擬表面細節 279
10.5.2 紋理的定義和映射 279
10.5.3 凹凸映射 280
10.6 整體光照模型與光線追蹤 281
10.6.1 整體光照模型 281
10.6.2 Whitted光照模型 281
10.6.4 光線跟蹤反走樣 284
10.7 OpenGL中的光照與表面繪製函式 285
10.7.1 OpenGL點光源 285
10.7.2 OpenGL全局光照 286
10.7.3 OpenGL表面材質 287
10.7.4 OpenGL透明處理 288
10.7.5 OpenGL表面繪製 289
10.7.6 實例 289
10.8 OpenGL中的紋理映射 291
習題10 293
參考文獻 295
4.2.7 OpenGL中的實體模型函式 85
4.3 非規則對象的表示 90
4.3.1 分形幾何 90
4.3.2 形狀語法 92
4.3.3 粒子系統 93
4.3.4 基於物理的建模 93
4.3.5 數據場的可視化 93
4.4 層次建模 94
4.4.1 段與層次建模 94
4.4.2 層次模型的實現 95
4.4.3 OpenGL中層次模型的實現 96
習題4 98
第5章 基本圖形生成算法 99
5.1 直線的掃描轉換 99
5.1.3 Bresenham算法 103
5.2 圓的掃描轉換 105
5.2.1 八分法畫圓 105
5.2.2 中點Bresenham畫圓算法 106
5.3 橢圓的掃描轉換 107
5.3.1 橢圓的特徵 108
5.3.2 橢圓的中點Bresenham算法 109
5.4 多邊形的掃描轉換與區域填充 112
5.4.1 多邊形的掃描轉換 112
5.4.2 邊緣填充算法 116
5.4.3 區域填充 118
5.4.4 其他相關概念 122
5.5 字元處理 123
5.5.1 點陣字元 123
5.5.2 矢量字元 124
5.6 屬性處理 124
5.6.1 線型和線寬 124
5.6.2 字元的屬性 127
5.6.3 區域填充的屬性 127
5.7 反走樣 128
5.7.1 過取樣 129
5.7.2 簡單的區域取樣 130
5.7.3 加權區域取樣 131
5.8 在OpenGL中繪製圖形 132
5.8.1 點的繪製 132
5.8.2 直線的繪製 133
5.8.3 多邊形面的繪製 134
5.8.4 OpenGL中的字元函式 138
5.8.5 OpenGL中的反走樣 139
習題5 141
第6章 二維變換及二維觀察 143
6.1 基本概念 143
6.2 基本幾何變換 144
6.2.1 平移變換 144
6.2.2 比例變換 145
6.2.3 旋轉變換 146
6.2.4 對稱變換 146
6.2.5 錯切變換 148
6.2.6 二維圖形幾何變換的計算 149
6.3 複合變換 150
6.3.1 二維複合平移變換和比例變換 150
8.1.4 插值與逼近 218
8.1.5 連續性條件 218
8.1.6 樣條描述 219
8.2 三次樣條 220
8.2.1 自然三次樣條 220
8.2.2 Hermite插值樣條 221
8.3.1 Bezier曲線的定義 223
8.3.2 Bezier曲線的性質 224
8.3.3 Bezier曲線的生成 226
8.3.4 Bezier曲面 229
8.4 B樣條曲線/曲面 230
8.4.2 B樣條曲線的性質 235
8.4.3 B樣條曲面 237
8.5 有理樣條曲線/曲面 237
8.5.1 NURBS曲線/曲面的定義 238
8.5.2 有理基函式的性質 239
8.5.3 NURBS曲線/曲面的特點 240
8.6 曲線/曲面的轉換和計算 241
8.6.1 樣條曲線/曲面的轉換 241
8.6.2 樣條曲線/曲面的離散生成 242
8.7 OpenGL生成曲線/曲面 244
8.7.1 Bezier曲線/曲面函式 244
8.7.2 GLU中的B樣條曲線/曲面函式 247
習題8 252
第9章 消隱 253
9.1 深度快取器算法 253
9.2 區間掃描線算法 255
9.3 深度排序算法 257
9.4 區域細分算法 258
9.5 光線投射算法 260
9.6 BSP樹 260
9.7 多邊形區域排序算法 261
9.8 OpenGL中的消隱處理 262
習題9 267
第10章 真實感圖形繪製 268
10.1 簡單光照模型 268
10.1.1 環境光 268
10.1.2 漫反射光 269
10.1.3 鏡面反射光 270
10.1.4 光強衰減 271
10.1.5 顏色 272
10.2 基於簡單光照模型的多邊形繪製 273
10.2.1 恆定光強的多邊形繪製 274
10.2.2 Gouraud明暗處理 274
10.2.3 Phong明暗處理 276
10.3 透明處理 277
10.4 產生陰影 278
10.5 模擬景物表面細節 278
10.5.1 用多邊形模擬表面細節 279
10.5.2 紋理的定義和映射 279
10.5.3 凹凸映射 280
10.6 整體光照模型與光線追蹤 281
10.6.1 整體光照模型 281
10.6.2 Whitted光照模型 281
10.6.4 光線跟蹤反走樣 284
10.7 OpenGL中的光照與表面繪製函式 285
10.7.1 OpenGL點光源 285
10.7.2 OpenGL全局光照 286
10.7.3 OpenGL表面材質 287
10.7.4 OpenGL透明處理 288
10.7.5 OpenGL表面繪製 289
10.7.6 實例 289
10.8 OpenGL中的紋理映射 291
習題10 293
參考文獻 295