互動式計算機圖形學基於OpenGL的自頂向下方法(第三版)

互動式計算機圖形學基於OpenGL的自頂向下方法(第三版)

《互動式計算機圖形學基於OpenGL的自頂向下方法(第三版)》是2006年清華大學出版社出版的圖書,作者是吳文國。

基本介紹

  • 書名:互動式計算機圖形學基於OpenGL的自頂向下方法(第三版)
  • 作者:吳文國
  • ISBN:9787302123903
  • 定價:62元
  • 出版社:清華大學出版社
  • 出版時間:2006.02.01
內容簡介,圖書目錄,

內容簡介

本書從OpenGL編程角度討論了圖形學基本原理及基本算法。全書共13章,分為三大部分:第一部分為第1~6章,主要介紹三維圖形程式的開發環境、三維對象的表示方法、空間坐標變換、三維視圖的生成過程等內容;第二部分為第7~10章,主要介紹光柵掃描、區域填充、畫直線和畫圓弧、裁剪及消隱等基本理論和基本算法;第三部分為第11~13章,主要介紹過程建模技術、可視化處理方法以及高級繪製方法等高級內容。本書的特點是採用了自頂向下的方法,集知識性和趣味性為一體,全書還包括17個完整的、令人感興趣的OpenGL程式。本書可作為計算機及相關專業本科生和研究生的圖形學教材,也適合相關程式設計師、工程技術人員及科研人員使用。

圖書目錄

第1章 圖形系統和模型 1
1.1 計算機圖形學的套用 1
1.1.1 信息顯示 1
1.1.2 設計 2
1.1.3 仿真與動畫 2
1.1.4 用戶界面 3
1.2 計算機圖形系統 3
1.2.1 像素與幀快取 4
1.2.2 輸出設備 4
1.2.3 輸入設備 6
1.3 圖像:物理方法和人工合成方法 6
1.3.1 對象與觀察者 6
1.3.2 光照與圖像 7
1.3.3 光線跟蹤 8
1.4 人眼的視覺系統 9
1.5 針孔照相機 11
1.6 虛擬照相機模型 12
1.7 程式設計師接口 13
1.7.1 應用程式開發人員的接口 14
1.7.2 筆式繪圖儀模型 14
1.7.3 三維API函式 16
1.7.4 彩圖介紹 17
1.7.5 建模-繪製模式 18
1.8 圖形系統的體系結構 19
1.8.1 顯示處理器 19
1.8.2 流水線結構 20
1.8.3 變換 20
1.8.4 裁剪 21
1.8.5 投影 21
1.8.6 光柵化 21
1.8.7 性能特性 21
1.9 小結 22
1.10 補充閱讀材料 22
習題 23
第2章 圖形學編程 25
2.1 Sierpinski鏤墊 25
2.2 二維應用程式編程 26
2.3 OpenGL API工具包 29
2.3.1 圖形函式 30
2.3.2 圖形流水線和狀態機 31
2.3.3 OpenGL接口 31
2.4 圖元與屬性 32
2.4.1 多邊形基本概念 33
2.4.2 OpenGL里的多邊形類型 34
2.4.3 繪製球體 35
2.4.4 字元 37
2.4.5 曲線和曲面 38
2.4.6 屬性 38
2.5 顏色 39
2.5.1 RGB顏色 41
2.5.2 索引顏色 42
2.5.3 設定顏色屬性 44
2.6 視圖處理 44
2.6.1 二維視圖 44
2.6.2 正交視圖 45
2.6.3 矩陣模式 46
2.7 控制函式 47
2.7.1 與Windows作業系統的
互動作用 47
2.7.2 縱橫比和視口 48
2.7.3 main()、display()和myinit()
函式 49
2.7.4 程式結構 50
2.8 Sierpinski鏤墊程式 50
2.9 多邊形與遞歸過程 52
2.10 三維Sierpinski鏤墊 54
2.10.1 使用三維點 54
2.10.2 在三維空間裡使用多邊形 55
2.10.3 隱藏面消除 56
2.11 小結 57
2.12 補充閱讀材料 58
習題 59
第3章 輸入與互動 62
3.1 互動模式 62
3.2 輸入設備 63
3.2.1 物理輸入設備 63
3.2.2 邏輯設備 65
3.2.3 測量與觸發 66
3.2.4 輸入模式 66
3.3 客戶-伺服器結構 67
3.4 顯示列表 68
3.4.1 顯示列表的定義和運行 69
3.4.2 字元和顯示列表 71
3.4.3 GLUT庫里的字型 73
3.5 事件驅動輸入的編程 74
3.5.1 使用指向輸入設備 74
3.5.2 視窗事件 76
3.5.3 鍵盤事件 78
3.5.4 顯示回調函式和空閒回調
函式 78
3.5.5 視窗管理 79
3.6 選單 79
3.7 拾取 80
3.8 一個簡單的畫圖程式 85
3.9 互動式動畫程式 89
3.9.1 旋轉的正方形 90
3.9.2 雙快取 91
3.9.3 其他一些快取問題 92
3.10 互動式程式的設計 93
3.11 邏輯運算 94
3.11.1 繪製可以刪除的線段 95
3.11.2 異或操作(XOR)和顏色 97
3.11.3 游標與覆蓋層位平面 97
3.12 小結 98
3.13 補充閱讀材料 98
習題 99
第4章 幾何對象與坐標變換 102
4.1 標量、點和矢量 102
4.1.1 幾何觀點 102
4.1.2 與坐標無關的幾何對象 104
4.1.3 數學觀點:矢量與仿射空間 104
4.1.4 計算機科學的觀點 105
4.1.5 幾何抽象數據類型(ADT) 105
4.1.6 直線 106
4.1.7 仿射加 107
4.1.8 凸性 107
4.1.9 點積和叉積 108
4.1.10 平面 109
4.2 三維圖元 110
4.3 坐標系與標架 111
4.3.1 矢量表示與n元組 112
4.3.2 坐標系的變換 113
4.3.3 坐標變換的例子 114
4.3.4 齊次坐標 115
4.3.5 標架變換的例子 117
4.3.6 表示矩陣的運算處理 119
4.3.7 標架系統與抽象數據類型 119
4.3.8 OpenGL里的標架系統 121
4.4 建立一個彩色立方體模型 123
4.4.1 一個立方體模型 123
4.4.2 內側面與外側面 124
4.4.3 對象表示的數據結構 124
4.4.4 彩色立方體 125
4.4.5 雙線性插值 126
4.4.6 頂點數組 127
4.5 仿射變換 128
4.6 平移、旋轉和縮放 130
4.6.1 平移變換 130
4.6.2 旋轉變換 131
4.6.3 縮放變換 132
4.7 齊次坐標表示的變換公式 133
4.7.1 平移 133
4.7.2 縮放 134
4.7.3 旋轉 134
4.7.4 剪下變換 135
4.8 變換的串乘運算 136
4.8.1 繞某一固定點的旋轉 137
4.8.2 一般的旋轉變換 138
4.8.3 實例變換 139
4.8.4 繞任一軸旋轉 140
4.9 OpenGL中的變換矩陣 142
4.9.1 當前變換矩陣 142
4.9.2 旋轉、平移和縮放 143
4.9.3 在OpenGL中繞固定點
旋轉 144
4.9.4 變換次序 144
4.9.5 立方體的旋轉 145
4.9.6 矩陣的裝載、壓棧和彈棧
操作 146
4.10 三維應用程式的互動方式 146
4.10.1 利用螢幕區域 147
4.10.2 一個虛擬跟蹤球 147
4.10.3 平滑旋轉 149
4.10.4 遞增式旋轉 149
4.11 四元數 150
4.11.1 複數與四元數 150
4.11.2 四元數與旋轉 151
4.12 小結 152
4.13 補充閱讀材料 153
習題 153
第5章 視圖 155
5.1 經典視圖和計算視圖 155
5.1.1 經典視圖 156
5.1.2 正則投影 157
5.1.3 軸測法投影 157
5.1.4 斜投影 158
5.1.5 透視圖 158
5.2 計算機視圖 159
5.3 照相機定位 160
5.3.1 照相機標架定位 160
5.3.2 兩個處理視圖的API
工具包 164
5.3.3 Look-At函式 166
5.3.4 其他視圖API工具包 167
5.4 簡單投影 168
5.4.1 透視投影 168
5.4.2 正交投影 170
5.5 OpenGL的投影視圖 171
5.5.1 OpenGL的透視投影 172
5.5.2 OpenGL平行視圖 173
5.6 隱藏面消除 174
5.7 在場景中漫遊 175
5.8 平行投影矩陣 177
5.8.1 投影正則化 177
5.8.2 正交投影矩陣 178
5.8.3 斜投影 179
5.9 透視投影矩陣 181
5.9.1 透視正則化 182
5.9.2 OpenGL的透視變換 184
5.10 投影與陰影 185
5.11 小結 187
5.12 補充閱讀材料 188
習題 188
第6章 明暗處理 190
6.1 光與材質 190
6.2 光源 192
6.2.1 彩色光源 192
6.2.2 環境光 193
6.2.3 點光源 193
6.2.4 聚光燈 194
6.2.5 遠距離光源 194
6.3 Phong反射模型 195
6.3.1 環境反射 196
6.3.2 漫反射 196
6.3.3 鏡面反射光 197
6.4 矢量計算 199
6.4.1 法向矢量 199
6.4.2 反射角度 201
6.4.3 利用中值矢量 202
6.4.4 折射光 202
6.5 多邊形的明暗處理 203
6.5.1 平面明暗處理 204
6.5.2 插值和Gouraud明暗處理
方法 205
6.5.3 Phong明暗處理方法 206
6.6 球面的遞歸細分逼近 206
6.7 OpenGL中的光源 209
6.8 OpenGL里的材質說明 211
6.9 球體模型的明暗處理 213
6.10 全局繪製 214
6.11 小結 215
6.12 補充閱讀材料 216
習題 216
第7章 離散技術 218
7.1 快取 218
7.2 數字圖像 219
7.3 快取寫操作 221
7.3.1 寫入模式 222
7.3.2 異或寫入模式 223
7.4 OpenGL里的位運算和像素運算 223
7.4.1 OpenGL的快取和像素
管道 224
7.4.2 點陣圖 225
7.4.3 光柵字型 225
7.4.4 像素與圖像 226
7.4.5 查找表 227
7.4.6 用於拾取的快取 228
7.5 映射方法 228
7.6 紋理映射 229
7.6.1 二維紋理映射 230
7.6.2 OpenGL里的紋理映射 234
7.6.3 紋理對象 239
7.6.4 多紋理通道 239
7.6.5 創建紋理對象 239
7.7 環境貼圖 240
7.8 凹凸貼圖 242
7.9 圖像合成技術 243
7.9.1 不透明性與融合 243
7.9.2 圖像合成 244
7.9.3 OpenGL里的融合與合成 244
7.9.4 反走樣 245
7.9.5 從後至前和從前至後的
繪製過程 246
7.9.6 景深提示和霧效果 247
7.10 多通道繪製與累積快取 248
7.10.1 場景反走樣 248
7.10.2 凹凸貼圖和浮雕效果 248
7.10.3 圖像處理 249
7.10.4 OpenGL的圖像處理
擴展集 250
7.10.5 其他多通道方法 250
7.11 採樣與走樣 251
7.11.1 採樣理論 251
7.11.2 重構 254
7.11.3 量化 255
7.12 小結 256
7.13 補充閱讀材料 256
習題 257
第8章 渲染器的實現 259
8.1 實現的基本策略 259
8.2 實現過程的4個主要任務 260
8.2.1 建模 261
8.2.2 幾何處理 261
8.2.3 光柵化 262
8.2.4 顯示 262
8.3 變換的實現 262
8.4 線段裁剪 264
8.4.1 Cohen-Sutherland裁剪算法 264
8.4.2 Liang-Barsky裁剪算法 266
8.5 多邊形裁剪 267
8.6 其他圖元的裁剪 269
8.6.1 包圍盒和包圍體 270
8.6.2 曲線、曲面和字元 270
8.6.3 幀快取里的裁剪操作 271
8.7 三維裁剪 271
8.8 隱藏面消除 273
8.8.1 景物空間和圖像空間 273
8.8.2 排序與隱藏面消除 275
8.8.3 背面剔除 275
8.8.4 z-buffer算法 275
8.8.5 深度排序和畫家算法 277
8.8.6 掃描線算法 279
8.9 掃描轉換 279
8.10 Bresenham算法 281
8.11 多邊形的掃描轉換 283
8.11.1 內外測試法 283
8.11.2 OpenGL與凹多邊形 284
8.11.3 帶z-buffer算法的掃描
轉換 285
8.11.4 填充與排序 286
8.11.5 種子填充算法 286
8.11.6 掃描線填充算法 287
8.11.7 奇異性 287
8.12 反走樣 288
8.13 顯示器因素 289
8.13.1 顏色系統 290
8.13.2 顏色矩陣 292
8.13.3 校正 292
8.13.4 抖動技術與半色調技術 293
8.14 小結 293
8.15 補充閱讀材料 294
習題 295
第9章 層級結構和面向對象的建模方法 297
9.1 圖符與實例 297
9.2 層級模型 298
9.3 一個機器人手臂 300
9.4 樹與樹的遍歷 302
9.5 樹形數據結構的用途 305
9.6 動畫 308
9.7 圖形對象 309
9.7.1 方法、屬性和訊息 309
9.7.2 一個立方體對象 310
9.7.3 實現立方體對象 312
9.7.4 對象與層級結構 312
9.7.5 幾何對象 313
9.8 場景圖 314
9.9 一個簡單場景圖的API 315
9.9.1 結點類 316
9.9.2 幾何結點 317
9.9.3 照相機類 319
9.9.4 光源和材質 320
9.9.5 變換類 321
9.9.6 機器人類 322
9.9.7 實現觀察者類 324
9.9.8 實現結點類 327
9.10 其他的樹形結構 330
9.10.1 CSG樹 330
9.10.2 明暗處理樹 332
9.10.3 BSP樹 332
9.10.4 四叉樹和八叉樹 334
9.11 圖形與全球資訊網 335
9.11.1 網路與協定 335
9.11.2 超媒體與HTML語言 336
9.11.3 資料庫與VRML 337
9.11.4 Java與Applets 337
9.12 小結 338
9.13 補充閱讀材料 338
習題 339
第10章 曲線與曲面 340
10.1 曲線和曲面的表示方法 340
10.1.1 顯式表示法 340
10.1.2 隱式表示 341
10.1.3 參數形式 342
10.1.4 參數多項式曲線 343
10.1.5 參數多項式曲面 344
10.2 設計準則 345
10.3 三次多項式參數曲線 346
10.4 插值 347
10.4.1 調和函式 348
10.4.2 三次插值面片 349
10.5 Hermite曲線和曲面 351
10.5.1 Hermite形式 351
10.5.2 幾何連續和參數連續 353
10.6 Bezier曲線和曲面 354
10.6.1 Bezier曲線 354
10.6.2 Bezier曲面面片 356
10.7 三次B-樣條 356
10.7.1 三次B-樣條曲線 357
10.7.2 B-樣條與基函式 359
10.7.3 樣條曲面 360
10.8 一般的B-樣條函式 360
10.8.1 B-樣條的遞歸定義 361
10.8.2 均勻樣條 362
10.8.3 非均勻B-樣條 362
10.8.4 NURBS 362
10.9 曲線和曲面的繪製 363
10.9.1 多項式求解方法 363
10.9.2 Bezier多項式的遞歸細分 364
10.9.3 其他多項式曲線的細分
繪製 366
10.9.4 Bezier曲面的細分 367
10.10 猶他大學茶壺模型 368
10.11 代數曲面 370
10.11.1 二次曲面 370
10.11.2 曲面的光線跟蹤方法
繪製 370
10.11.3 曲線與曲面的細分 371
10.12 OpenGL里的曲線與曲面 373
10.12.1 Bezier曲線 373
10.12.2 Bezier曲面 374
10.12.3 茶壺顯示 375
10.12.4 NURBS函式 376
10.12.5 二次曲面 377
10.13 小結 377
10.14 補充閱讀材料 377
習題 378
第11章 過程建模方法 379
11.1 使用過程建模的理由 379
11.2 基於物理模型和粒子系統 380
11.3 牛頓粒子 381
11.3.1 獨立粒子 382
11.3.2 彈簧力 382
11.3.3 吸引力與排斥力 383
11.4 求解粒子系統 384
11.5 約束 386
11.5.1 碰撞 386
11.5.2 球體內的粒子 388
11.5.3 軟約束 389
11.6 基於語言的模型 389
11.7 遞歸方法與分形幾何 392
11.7.1 標尺與長度 392
11.7.2 分形維數 393
11.7.3 中點分割與布朗運動 394
11.7.4 分形山體 395
11.8 Mandelbrot集合 396
11.9 小結 398
11.10 補充閱讀材料 398
習題 399
第12章 可視化 400
12.1 數據+幾何 400
12.2 高度場和等高線 400
12.2.1 格線 401
12.2.2 等高線圖 403
12.2.3 Marching Squares 403
12.3 表面和標量場的可視化 408
12.3.1 體數據集 409
12.3.2 隱函式的可視化 410
12.4 等值面和Marching Cubes 411
12.5 格線簡化 413
12.6 直接體繪製 414
12.6.1 顏色和不透明度賦值 414
12.6.2 濺射法 415
12.6.3 體光線跟蹤法 416
12.6.4 體的紋理映射 417
12.7 向量場可視化 417
12.7.1 Hedgehog法 417
12.7.2 圖示符 418
12.7.3 顏色 419
12.7.4 粒子軌跡和流線 420
12.8 張量可視化 421
12.9 小結 422
12.10 補充閱讀材料 422
習題 422
第13章 高級繪製方法 424
13.1 流水線繪製技術不能解決的問題 424
13.2 光線跟蹤 425
13.3 建立一個簡單的光線跟蹤器 427
13.3.1 光線跟蹤的遞歸過程 427
13.3.2 交點計算 428
13.3.3 光線跟蹤的變異形式 430
13.4 繪製方程 431
13.5 輻射度 432
13.5.1 輻射度方程 432
13.5.2 求解輻射度方程 433
13.5.3 計算形狀因子 434
13.5.4 實現輻射度算法 436
13.6 RenderMan 437
13.7 大規模場景繪製 437
13.7.1 中排序繪製法 438
13.7.2 後排序繪製法 439
13.7.3 先排序繪製法 441
13.8 基於圖像的繪製 442
13.9 小結 443
13.10 補充閱讀材料 444
習題 444
附錄A 實例程式 446
A.1 Sierpinski鏤墊程式 447
A.2 生成Sierpinski鏤墊的遞歸程式 448
A.3 生成三維Sierpinski鏤墊程式 450
A.4 生成三維Sierpinski鏤墊的遞歸
程式 452
A.5 生成正方形程式 454
A.6 畫圖程式 457
A.7 介紹雙快取使用的程式 464
A.8 用選擇模式實現拾取功能程式 466
A.9 立方體旋轉程式 469
A.10 利用頂點數組旋轉立方體程式 472
A.11 用虛擬跟蹤球實現立方體旋轉
程式 474
A.12 觀察者漫遊程式 478
A.13 球體的細分逼近程式 481
A.14 像素讀寫程式 485
A.15 帶紋理立方體的旋轉程式 486
A.16 場景圖形程式實例 490
A.17 畫Bezier曲執行緒序 495
附錄B 空間 501
B.1 標量 501
B.2 向量空間 501
B.3 仿射空間 503
B.4 歐幾里德空間 504
B.5 投影 505
B.6 格萊姆-施密特正交化 505
B.7 補充閱讀材料 506
習題 506
附錄C 矩陣 507
C.1 定義 507
C.2 矩陣運算 507
C.3 行矩陣和列矩陣 508
C.4 秩 509
C.5 不同表示之間的轉換 510
C.6 叉乘運算 511
C.7 特徵值和特徵向量 511
C.8 補充閱讀材料 512
習題 512
參考文獻 514

相關詞條

熱門詞條

聯絡我們