計算機圖形學
計算機圖形學——用OpenGL實現(第2版)
《計算機圖形學——用OpenGL實現(第2版)》是2006年4月26日清華大學出版社出版的圖書,作者是希爾,譯者是羅霄。
本書通過最能代表技術發展狀況的示例綜合介紹了計算機圖形學方面的原則和技巧,其中的示例都是學生和老師們能夠每天在網際網路和利用計算機製作的電影中看到的。作者曾經編寫過許多極具實用性的圖書。書中的每個概念都有詳細介紹,並且說明了其背後的數學原理。本書向讀者介紹了將數學演演算法轉變成程序代碼的方法,並有結果展示。新版本還為讀者提供了計算機圖形學領域的最前沿信息。
本書特色:
使用OpenGL作為支持軟體--附錄中說明了如何獲取這個軟體(免費下載)及其
安裝方法,這個軟體在多種平台上都能使用。
使用C++作為編程語言。介紹有用的圖形類,但並非嚴格的面向對象編程。
最前沿和更深入的3D圖形處理技術和數學原理。
更新了所有反映這一領域發展狀況的內容。
每章最後都有大量的案例分析。
對圖形學技巧的首要原則的清晰描述。
介紹了功能強大的場景設計語言(Scene Design Language, SDL);本書的網站
中有SDL解釋程序的C++代碼。
一個附錄專門介紹了PostScript® 語言。
提供了概念、背景數學原理、程序編碼和結果之間的鏈接。
包括了豐富的、能夠反映技術發展水平的成熟示例。
F.S.Hill,JR.是馬賽諸塞邛可默斯特大學的電子和計算機工程教授。他於1968年在耶魯大學獲得物理學博士學位。在貝爾電話實驗室工作了3年,致力於數字數據傳輸的研究。1970年,進人大學工作。F.S.Hill,JR.著有多篇論文,涉及信號處理、通信和計算機圖形領域。他與人合著了一本工程學方面的基礎性圖書,並且編著了他的第二本圖形學著作。F.S.Hill,JR曾數次獲得卓越教學獎。
第1章 計算機圖形學導言 1
1.1 什麼是計算機圖形 1
1.2 計算機生成的圖片應用
在哪些地方 3
1.2.1 藝術、娛樂以及出版 3
1.2.2 計算機圖形和圖像處理 4
1.2.3 監視過程 5
1.2.4 顯示模擬 6
1.2.5 計算機輔助設計 7
1.2.6 科學分析和可視化 7
1.3 在計算機圖形中創建的圖片元素 10
1.3.1 折線 10
1.3.2 文本 12
1.3.3 實心區域 13
1.3.4 光柵圖像 14
1.3.5 灰度陰影的呈現以及
光柵圖像中的顏色 18
1.4 圖像顯示設備 21
1.4.1 繪線型顯示器 21
1.4.2 光柵顯示器 22
1.4.3 索引顏色和查找表格 26
1.4.4 其他的光柵顯示設備 29
1.4.5 硬拷貝光柵設備 30
1.5 圖形輸入原語和設備 31
1.5.1 輸入圖形原語的類型 31
1.5.2 物理輸入設備的類型 32
1.6 小結 34
1.7 進一步閱讀 34
第2章 繪製圖片入門 36
2.1 著手創建圖片 36
2.1.1 設備無關編程和OpenGL 38
2.1.2 基於窗口的編程 38
2.1.3 打開一個繪圖窗口 40
2.2 繪製基本圖形原語 41
繪製點叢 44
2.3 繪製線條畫 50
2.3.1 繪製折線和多邊形 51
2.3.2 使用moveto( )和
lineto( )繪製線條 55
2.3.3 繪製校準長方形 56
2.3.4 校準長方形的高寬比 57
2.3.5 填充多邊形 59
2.3.6 OpenGL中的其他
圖形原語 60
2.4 使用滑鼠和鍵盤的簡單交互作用 61
2.4.1 滑鼠交互作用 61
2.4.2 鍵盤交互作用 64
2.5 小結 65
2.6 案例分析 66
案例分析2.1?偽隨機點的集合 66
案例分析2.2?迭代函數系統
導言 68
案例分析2.3?資金分割率和
其他的寶石 71
案例分析2.4?建立並使用折線
文件 73
案例分析2.5?線條和多邊形的
點畫法 74
案例分析2.6?折線編輯器 75
案例分析2.7?建立並運行迷陣 76
2.7 進一步閱讀 78
第3章 更多繪圖工具 79
3.1 簡介 80
3.2 世界窗口和視口 80
3.2.1 從窗口到視口的映射 82
3.2.2 自動設定窗口和視口 91
3.3 裁剪線 94
3.3.1 裁剪線段 94
3.3.2 Cohen-Sutherland裁剪
演演算法 95
3.4 開發Canvas類 98
3.4.1 一些有用的支持類 99
3.4.2 類Canvas的聲明 100
3.4.3 類Canvas的實現方法 101
3.5 相對繪圖常式 103
3.5.1 開發moveRel( )和
lineRel( ) 104
3.5.2 龜紋繪圖歷程 105
3.6 基於規則多邊形的圖形 109
3.6.1 規則多邊形 109
3.6.2 n-Gon的變分(Variation) 111
3.7 繪製圓和圓弧 115
3.7.1 繪製圓 115
3.7.2 繪製圓弧 115
3.8 對曲線使用參數形式 119
3.8.1 曲線的參數形式 119
3.8.2 繪製以參數表示的曲線 122
3.8.3 超橢圓(Superellipses) 124
3.8.4 極坐標形狀 125
3.8.5 3D曲線 127
3.9 小結 128
3.10 案例分析 129
案例分析3.1 學習數理邏輯圖形
和混沌模擬 129
案例分析3.2 在C或者C++中實
現Cohen-Suther-
land裁剪器 131
案例分析3.3 在Turbo C++中
實現Canvas 133
案例分析3.4 繪製圓弧 135
案例分析3.5 一些用於物理和
工程中的圖形 136
案例分析3.6 平鋪圖案 138
案例分析3.7 主旋律的有趣
改變 139
案例分析3.8 圓圍繞著圓
滾動 141
案例分析3.9 超橢圓 142
3.11?進一步閱讀 143
第4章 圖形向量工具 144
4.1 簡介 145
4.2 向量 147
4.2.1 向量操作 148
4.2.2 向量線性組合 149
4.2.3 向量的大小;單位向量 151
4.3 點積 152
4.3.1 點積的性質 153
4.3.2 兩個向量的夾角 154
4.3.3 b·c的符號和正交性 154
4.3.4 2D"正交"向量 156
4.3.5 正交投影和點到線
的距離 158
4.3.6 投影的應用:反射 160
4.4 兩個向量的叉積 161
4.4.1 叉積的幾何解釋 162
4.4.2 求平面的法向量 163
4.5 主要幾何對象的表示 164
4.5.1 坐標系和坐標框架 165
4.5.2 點的仿射組合 168
4.5.3 兩個點的線性插值 170
4.5.4 藝術和動畫的"插值" 171
4.5.5 概述:二次插值、立方
插值和貝濟埃曲線 173
4.5.6 表示線和平面 174
4.6 求兩條線段的交點 182
直線相交的應用:過三點的圓 184
4.7 直線和平面的交點;裁剪 186
4.8 多邊形相交問題 188
4.8.1 處理凸多邊形和多面體 189
4.8.2 射線與凸多邊形的交點
和裁剪問題 190
4.8.3 Cyrus-Beck裁剪演演算法 194
4.8.4 任意多邊形的裁剪 196
4.8.5 更高級的裁剪問題 198
4.9 小結 198
4.10 案例分析 199
案例分析4.1 插值動畫 199
案例分析4.2 大量的圓 200
案例分析4.3 點Q是否在凸多
邊形P內部 201
案例分析4.4 密室反射(2D射線
跟蹤) 202
案例分析4.5 Cyrus-Beck
裁剪 203
案例分析4.6 用凸多邊形裁剪多
邊形:Sutherland-
Hodgman裁剪 203
案例分析4.7 用多邊形裁剪多
邊形:Weiler-
Atherton 裁剪 206
案例分析4.8 多邊形的布爾
操作 208
4.11 進一步閱讀 210
第5章 對象的變換 211
5.1 簡介 212
5.2 變換導論 212
5.2.1 變換點和對象 215
5.2.2 仿射變換 217
5.2.3 初等2D仿射變換的
幾何效果 218
5.2.4 仿射變換的逆轉 223
5.2.5 組合仿射變換 224
5.2.6 組合2D變換的例子 226
5.2.7 仿射變換的一些
有用特徵 230
5.3 3D仿射變換 235
5.3.1 初等3D變換 236
5.3.2 組合3D仿射變換 240
5.3.3 組合旋轉 240
5.3.4 3D仿射變換特徵小結 245
5.4 改變坐標系 246
5.5 在程序中使用仿射變換 249
保存CT以備用 256
5.6 使用OpenGL繪製3D場景 260
5.6.1 觀察過程和圖形流水線
綜述 261
5.6.2 一些OpenGL建模和
視角工具 264
5.6.3 用OpenGL繪製基本
形狀 267
5.6.4 從文件中讀取場景 275
5.7 小結 279
5.8 案例分析 280
案例分析5.1 用Canvas中的CT
進行自行變換 280
案例分析5.2 使用多個旋轉繪製圖
5.39中的星星 280
案例分析5.3 分解2D仿射變換 280
案例分析5.4 通用3D錯切 284
案例分析5.5 繞某條軸旋轉:構造
方法 286
案例分析5.6 分解3D仿射
變換 287
案例分析5.7 用SDL繪製3D
場景 289
5.9 進一步閱讀 289
第6章 使用多邊形網格為各種形狀建模 290
6.1 簡介 290
6.2 使用多邊形網格實體建模簡介 291
6.2.1 定義多邊形網格 292
6.2.2 計演演算法向量 294
6.2.3 網格的性質 296
6.2.4 為非實體物體建立網格
模型 298
6.2.5 在程序中使用網格 298
6.3 多面體 301
6.3.1 稜柱和對角柱 303
6.3.2 柏拉圖立體 304
6.3.3 其餘常見的多面體 309
6.4 推擠型形狀 312
6.4.1 生成稜柱 312
6.4.2 推擠稜柱數組:"堆砌
工作" 313
6.4.3 帶有"扭曲"的推擠 315
6.4.4 建立分段推擠形狀:管狀
物體和蛇形物體 316
6.4.5 "離散地"延伸旋轉面 321
6.5 平滑物體的網格近似 323
6.5.1 表面的表示方法 323
6.5.2 表面的法向量 325
6.5.3 仿射變換的作用 326
6.5.4 三種"標準"形狀:球面、
圓柱面和圓錐面 327
6.5.5 為曲面建立多邊形網格 331
6.5.6 直紋面 333
6.5.7 旋轉面 338
6.5.8 二次曲面 340
6.5.9 超二次曲面 344
6.5.10 基於三維曲線的管狀
物體 346
6.5.11 基於雙變數顯式函數
的表面 346
6.6 小結 347
6.7 案例分析 348
案例分析6.1 存儲在文件中的
網格 348
案例分析6.2 Newell方法的
推導 349
案例分析6.3 稜柱 351
案例分析6.4 稜柱組和推擠
四邊形帶 352
案例分析6.5 基於參數曲線的
管狀物體和蛇形
物體 353
案例分析6.6 建立離散旋轉面 354
案例分析6.7 關於邊列表和
線框模型 354
案例分析6.8 拱形屋頂 354
案例分析6.9 關於柏拉圖立體 355
案例分析6.10 關於阿基米德
立體 355
案例分析6.11 二次曲面的代數
表達式 355
案例分析6.12 超二次曲面 357
案例分析6.13 繪製平滑參數
表面 357
案例分析6.14 錐化、扭曲、彎曲
和擠壓 358
6.8 進一步閱讀 359
第7章 三維視圖 360
7.1 簡介 360
7.2 再次研究照相機 361
7.2.1 設置視角範圍 362
7.2.2 照相機的定位和定向 362
7.3 在程序中建立照相機 368
移動照相機 370
7.4 三維物體的透視投影 373
7.4.1 點的透視投影 374
7.4.2 直線的透視投影 377
7.4.3 把透視法結合到圖形
管道中 380
7.4.4 對視角範圍進行面裁剪 387
7.5 生成立體視圖 393
7.6 投影的分類 395
7.6.1 一點透視,兩點透視和
三點透視 396
7.6.2 平行投影 400
7.7 小結 406
7.8 案例分析 407
案例分析7.1 在場景中移動
照相機 407
案例分析7.2 立體視圖 408
案例分析7.3 生成平行投影 408
案例分析7.4 自己產生視圖(假定
沒有OpenGL可以
使用) 408
案例分析7.5 去掉背面以提高
效率 408
7.9 進一步閱讀 410
第8章 渲染表面獲得視覺真實感 411
8.1 簡介 411
8.2 明暗處理模型介紹 415
8.2.1 計算反射光的幾何要素 416
8.2.2 計算漫反射分量 416
8.2.3 鏡面反射 418
8.2.4 環境光的作用 421
8.2.5 光分量的結合 422
8.2.6 添加顏色 423
8.2.7 明暗處理和圖形管道 425
8.2.8 在OpenGL中使用光源 426
8.2.9 在OpenGL中使用材質
屬性 431
8.2.10 對SDL指定的場景進行
明暗處理 432
8.3 平面明暗處理方式和平滑明暗
處理方式 432
8.3.1 平面明暗處理 433
8.3.2 平滑明暗處理 434
8.4 去除隱藏面 438
深度緩衝區方法 438
8.5 給面添加紋理 441
8.5.1 把紋理映射到平表面上 444
8.5.2 渲染紋理 446
8.5.3 紋理改變了什麼 453
8.5.4 使用OpenGL獲得的
紋理示例 455
8.5.5 向曲面上環繞紋理 460
8.5.6 反射映射 464
8.6 為物體添加陰影 467
8.6.1 作為紋理的陰影 468
8.6.2 利用陰影緩衝區
生成陰影 469
8.7 小結 471
8.8 案例分析 472
案例分析8.1 使用OpenGL生成
有陰影的物體 472
案例分析8.2 自己實現圖形
管道 472
案例分析8.3 添加多邊形填充和
深度緩衝區去除
隱藏面 473
案例分析8.4 渲染紋理 473
案例分析8.5 應用可編程3D
紋理 473
案例分析8.6 繪製陰影 474
案例分析8.7 擴展SDL使其包括
紋理生成 474
8.9 進一步閱讀 474
第9章 通向無限之路 475
9.1 簡介 476
9.2 分形與自相似性 476
9.2.1 曲線的連續細化 477
9.2.2 繪製Koch曲線和Koch
雪花 478
9.2.3 分形維數 480
9.3 字元串產生式和PEANO曲線 481
9.3.1 在程序中遞歸生成字元串
並繪圖 483
9.3.2 添加分支 486
9.4 拼接平面 489
9.4.1 單面拼接 490
9.4.2 雙面拼接 492
9.4.3 繪製拼接 494
9.4.4 "爬蟲" 494
9.5 通過迭代函數系統生成圖像 497
9.5.1 拷貝器試驗 497
9.5.2 拷貝過程的一些基本
理論 499
9.5.3 繪製第k次迭代結果 500
9.5.4 混沌遊戲 501
9.5.5 計算IFS;分形圖像壓縮 504
9.6 MANDELBROT集 507
9.6.1 Mandelbrot集和迭代
函數系統 508
9.6.2 定義Mandelbrot集 511
9.6.3 計算點c是否在Mandelbrot
集內 513
9.6.4 繪製Mandelbrot集 514
9.6.5 Mandelbrot集的幾點性質 515
9.7 JULIA集 516
9.7.1 充滿Julia集Kc 516
9.7.2 繪製充滿Julia集 516
9.7.3 固定點和吸引盆的
幾點性質 517
9.7.4 Julia集Jc 519
9.8 隨機分形 521
9.8.1 線段的分形化 522
9.8.2 控制分形曲線的
頻譜密度 523
9.9 小結 525
9.10 案例分析 526
案例分析9.1 繪製字元串
產生式 526
案例分析9.2 繪製雪花和
爬蟲 527
案例分析9.3 混沌遊戲 529
案例分析9.4 繪製Mandelbrot
集中的軌道 529
案例分析9.5 生成Mandelbrot集
的圖像 530
案例分析9.6 生成Julia集的
圖像 530
案例分析9.7 非周期性拼接;
Penrose拼板 530
案例分析9.8 分形化曲線 532
案例分析9.9 為分形山建模 533
9.11 進一步閱讀 533
第10章 光柵顯示工具 534
10.1 簡介 534
10.2 處理像素映射 536
10.2.1 對像素映射的操作 536
10.2.2 像素映射的有用數據
類型 537
10.2.3 圖像的縮放和旋轉 543
10.3 合併像素映射 546
10.3.1 讀-修改-寫循環 547
10.3.2 Alpha通道和圖像
融合 548
10.3.3 像素的邏輯合併 552
10.3.4 BitBLT操作 556
10.4 自己實現直線繪製:Bresenham
演演算法 557
Bresenham直線繪製演演算法 558
10.5 定義和填充像素區域 563
10.5.1 定義區域範圍 564
10.5.2 像素定義的區域 564
10.5.3 一種遞歸洪水填充
演演算法 565
10.5.4 用圖案填充區域 566
10.5.5 利用一致性:基於像素
串的區域填充 568
10.6 處理符號定義的區域 569
10.6.1 矩形定義的區域 570
10.6.2 路徑定義的區域 571
10.7 填充多邊形定義的區域 573
10.7.1 邊緣上的哪些像素
屬於多邊形 574
10.7.2 改進演演算法性能 576
10.8 失真;反失真技術 580
10.8.1 反失真技術 581
10.8.2 紋理的反失真 586
10.8.3 使用OpenGL反失真 588
10.9 生成更多的明暗效果和色彩 590
10.9.1 順序抖動 591
10.9.2 誤差擴散 595
10.10 小結 597
10.11 案例分析 598
案例分析10.1 讀取和顯示BMP
圖像文件 598
案例分析10.2 用OpenGL融合
兩幅圖像 598
案例分析10.3 基於像素串的
區域填充 598
案例分析10.4 處理shape數據
結構 599
案例分析10.5 shape的鏈碼 599
案例分析10.6 填充"水平凸"
多邊形 599
案例分析10.7 一般多邊形
填充 600
案例分析10.8 誤差擴散 600
10.12 進一步閱讀 600
第11章 曲線與曲面設計 601
11.1 簡介 602
11.1.1 軌跡參數曲線 602
11.1.2 運動的平滑度 603
11.2 用多項式表示曲線 606
11.3 關於互動式曲線設計 611
11.4 用貝濟埃曲線進行曲線設計 613
de Casteljau演演算法 613
11.5 貝濟埃曲線的性質 618
11.6 尋找更好的混合函數 623
11.6.1 局部控制問題 623
11.6.2 混合函數集的期望
性質表 624
11.6.3 分段多項式曲線和樣條 626
11.6.4 根據g(t)建立一組混合
函數 627
11.6.5 樣條曲線和基函數 630
11.7 B樣條基函數 631
11.7.1 B樣條函數定義 632
11.7.2 在結點向量中使用
多重結點 636
11.7.3 開放B樣條曲線:標準
結點向量 637
11.8 B樣條曲線設計的有用性質 640
使用多重控制點 641
11.9 有理樣條和NURBS曲線 642
11.10 插值簡述 646
11.10.1 用分段三次多項式
插值 647
11.10.2 Hermite插值 648
11.10.3 自然三次樣條 651
11.10.4 三次插值中計算
斜率 653
11.10.5 交互指定切向量 656
11.11 曲面建模 657
11.11.1 基於B樣條的
直紋面 657
11.11.2 基於B樣條的
旋轉面 657
11.11.3 貝濟埃表面碎片 659
11.11.4 貝濟埃碎片的拼接 660
11.11.5 B樣條碎片 662
11.11.6 NURBS曲面 663
11.12 小結 664
11.13 案例分析 666
案例分析11.1 幾種有趣的
參數曲線 666
案例分析11.2 "橢圓桌球
桌" 667
案例分析11.3 貝濟埃曲線 669
案例分析11.4 一種二次樣條
曲線生成法 669
案例分析11.5 建立樣條曲線
編輯器 669
案例分析11.6 用B樣條插值
控制點 670
案例分析11.7 用三次多項式
插值 671
案例分析11.8 古老的茶壺 671
案例分析11.9 投影變換不
變性 673
案例分析11.10 繪製NURBS
碎片 673
11.14 進一步閱讀 675
第12章 色彩理論 676
12.1 簡介 676
12.2 描述顏色 679
12.2.1 主導波長 679
12.2.2 色匹配 680
12.3 國際照明協會標準 682
12.3.1 構造CIE表 684
12.3.2 使用CIE色度表 685
12.3.3 色域 686
12.4 顏色空間 687
12.4.1 RGB和CMY顏色空間 687
12.4.2 加色和減色系統 688
12.4.3 HLS顏色模型 689
12.5 顏色量化 692
12.5.1 均衡量化 693
12.5.2 流行演演算法 695
12.5.3 中線切割演演算法 695
12.5.4 八叉樹量化 696
12.6 小結 698
12.7 案例分析 699
案例分析12.1 畫CIE圖 699
案例分析12.2 畫RGB空間 699
案例分析12.3 HSV到RGB
的轉變 699
案例分析12.4 均勻顏色量化 699
案例分析12.5 流行顏色量化 699
案例分析12.6 中線切割顏色
量化 699
案例分析12.7 八叉樹顏色
量化 700
12.8 進一步閱讀 701
第13章 隱面的消除 702
13.1 簡介 703
13.1.1 對象精度與圖像精度
方法的比較 704
13.1.2 多邊形網格的數據描述 705
13.2 再次研究深度緩存演演算法 707
13.3 列表優先HSR演演算法 708
13.3.1 粗心畫家演演算法 709
13.3.2 使用二叉空間分割(BSP)
樹的HSR 710
13.3.3 深度排序演演算法 714
13.4 掃描線HSR方法 716
13.5 區域的細分方法 719
13.5.1 象限細分 719
13.5.2 簡單區域的其他定義 722
13.6 關於隱線消除法 724
edgeTest( )中的幾何測試 726
13.7 曲面的HSR方法 728
13.8 小結 730
13.9 案例分析 731
案例分析13.1 畫家演演算法
測試 731
案例分析13.2 測試和分割 732
案例分析13.3 使用BSP樹
消除隱面 732
案例分析13.4 使用深度排序法解
決HSR問題 733
案例分析13.5 採用掃描線HSR
方法 734
案例分析13.6 使用WARNOCK
演演算法繪製 734
案例分析13.7 HLR的邊堆棧
演演算法 734
13.10 進一步閱讀 735
第14章 光線追蹤法的介紹 736
14.1 簡介 737
14.2 建立光線跟蹤法的幾何學 738
14.3 光線跟蹤法過程概述 740
14.4 光線與對象的交點 741
14.4.1 光線與通用平面的
相交 743
14.4.2 光線與通用球體相交 743
14.4.3 光線與變換后的對象
相交 744
14.5 編製光線跟蹤器的應用程序 746
14.5.1 計算光線-球體相交
的常式 752
14.5.2 用於發光球體場景的
完整的光線跟蹤器 754
14.6 光線與其他幾種基本
形狀的相交 755
14.6.1 與正方形相交 755
14.6.2 與錐形柱體相交 756
14.6.3 與立方體(或任何凸
多面體)相交 759
14.6.4 考慮更多的基本形狀 766
14.7 繪製場景的明暗圖 767
14.7.1 確定命中點處的法向量 768
14.7.2 根據對象的表面材料
為其著色 768
14.7.3 基於物理原理的明暗處理
模型:Cook-Torrance
明暗處理 770
14.8 加入表面紋理 776
14.8.1 實體紋理 777
14.8.2 在表面上粘貼圖像 786
14.8.3 反失真光線追蹤 788
14.9 範圍的使用 789
14.9.1 框形範圍和球形範圍 790
14.9.2 投影範圍的使用 795
14.10 加陰影以增加真實感 798
14.11 反射與透明 801
14.11.1 光的折射 803
14.11.2 處理shade( )中的
折射問題 807
14.12 複合對象:關於對象的布爾
運算 810
14.12.1 對CSG對象的光線
追蹤 811
14.12.2 布爾對象的數據
結構 813
14.12.3 光線與布爾對象相交 816
14.12.4 構造和使用CSG對象
的範圍 820
14.13 小結 822
14.14 案例分析 823
案例分析14.1 放射型光線
跟蹤器 823
案例分析14.2 一種新型的光線
跟蹤器 824
案例分析14.3 在光線跟蹤器中
實現陰影處理 824
案例分析14.4 使用範圍加速光
線跟蹤過程 824
案例分析14.5 對3D紋理的
光線跟蹤 824
案例分析14.6 反失真 825
案例分析14.7 對其他基本形狀
的光線跟蹤 825
案例分析14.8 一個用於研究
折射效應的2D
光線跟蹤器 825
案例分析14.9 反射光和折
射光 825
案例分析14.10 對對象的布爾
組合進行光線
跟蹤 825
14.15 進一步閱讀 826
附錄1 圖形工具:獲得OpenGL 827
A1.1 OpenGL的獲取和安裝 827
附錄2 計算機圖形學的數學研究 829
A2.1 一些關於矩陣及其運算的
主要定義 829
A2.1.1 矩陣的運算 830
A2.1.2 兩個矩陣相乘 831
A2.1.3 矩陣的分塊 833
A2.1.4 矩陣的行列式 834
A2.1.5 矩陣的逆矩陣 835
A2.2 向量及其運算的一些性質 837
A2.2.1 向量的正交;正交點積 837
A2.2.2 標量三重積 837
A2.2.3 三重向量積以及4個
向量的積 839
A2.3 複數的運算 839
A2.4 球坐標和方向餘弦 842
附錄3 一些有用的類以及實用常式 845
附錄4 PostScript?簡介 877
A4.1 關於PostScript語言 878
A4.1.1 準備事項 878
A4.1.2 PostScript是"基於
堆棧的" 879
A4.1.3 一些有關堆棧的操作符:
pop、dup、exch和
clear 880
A4.1.4 更高級的堆棧操作符 880
A4.1.5 一些算術操作符 881
A4.2 PostScript中的圖形操作符 884
A4.2.1 坐標系及其變換 884
A4.2.2 路徑構造動詞 885
A4.2.3 圓弧 886
A4.2.4 用作繪圖動詞 887
A4.2.5 坐標變換 888
A4.2.6 圖形狀態操作符 892
A4.3 在PostScript中繪製文本 893
A4.4 定義新的變數和過程 894
A4.4.1 定義變數 894
A4.4.2 定義過程 895
A4.4.3 使用repeat實現一種
簡單的迭代形式 899
A4.5 決策和迭代 901
A4.5.1 把布爾值作為參數的
動詞 901
A4.5.2 判斷 902
A4.5.3 迭代 904
A4.6 列印值 908
A4.7 繪製灰度圖 909
附錄5 SDL簡介 912
A5.1 SDL文法 913
A5.2 SDL中的宏 917
A5.3 擴展SDL 917