內容簡介
本書在系統介紹計算機圖形學算法及原理的基礎上,利用Visual C++開發環境,編寫相應的應用程式,較全面地把計算機圖形學理論與計算機繪圖的實踐結合起來。
本書共10章,包括基本圖形的生成、二維圖形、圖形互動技術、簡單CAD繪圖系統開發實例、三維圖形、曲線與曲面、幾何造型、消隱技術、真實感圖形繪製及計算機動畫等內容。
本書可作為大專院校計算機圖形學理論課程教材、上機教材或工程技術人員自學計算機圖形學和Visual C++的參考書,也可作為計算機圖形學教師理論教學參考書和課程設計的素材。
圖書前言
計算機圖形技術是隨著計算機技術在圖形處理領域中的套用而發展起來的一門新技術,是伴隨著電子計算機及其外圍設備的發展而產生的,現已成為計算機套用科學中的一個重要分支,在許多行業中起著越來越大的作用。這必然促使計算機專業人員、廣大非計算機專業的套用人員,從計算機圖形學的理論高度和計算機繪圖的實用角度來研究和開發計算機圖形的生成技術及軟體。在多年的教學、科研和技術開發工作中,我們深刻地體會到:計算機圖形學的原理和算法是開發圖形軟體的基礎,對高級語言中繪圖工具的掌握是理解和套用計算機圖形理論的翅膀。只有紮實的計算機圖形學理論基礎,才能開發圖形軟體;必須靈活運用高級語言中的繪圖能力才能開發出優質的圖形軟體。基於這些體會,作者認為很有必要編寫出版這樣的一本書,把計算機圖形學理論與計算機繪圖的實踐結合起來,在計算機理論與互動式圖形軟體設計之間架起一座橋樑,對圖形學的理論和方法儘量用簡明的算法程式描述出來,掌握用Visual C++開發工具進行互動式圖形軟體的設計,使學習者在掌握理論和實用知識兩方面均感到套用自如。
本書從計算機圖形學的基本圖形生成講起,採取循序漸進的內容安排,介紹計算機圖形學的有關原理、算法,由簡單到複雜、由二維至三維,理論與實踐相結合,對所論述的算法或原理給出了Visual C++詳盡的程式設計過程。書中範例的許多算法與理論篇中的內容不盡相同,學習者須按照書中的講解,將這些Visual C++程式移植到範例中去,舉一反三,就可容易地在計算機上得到驗證與提高,從而為深入理解圖形學原理提供重要的保證,並為今後的計算機圖形學套用打下堅實的實踐基礎和編程積累。
本書要求學習者有線性代數和Visual C++基礎知識。讀者可根據自身情況,在Visual C++開發環境中上機練習,掌握和套用圖形學的各種算法,並試著開發一些具有實用性的小型繪圖軟體。
圖書目錄
第1章 基本圖形的生成 1
1.1 直線 1
1.1.1 DDA(數值微分)算法 2
1.1.2 生成直線的中點畫線法 2
1.1.3 Bresenham算法 2
1.1.4 程式設計 3
1.2 圓 7
1.2.1 直角坐標法 7
1.2.2 中點畫圓法 8
1.2.3 圓的Bresenham算法 8
1.3 橢圓掃描轉換中點算法 11
1.4 多邊形的掃描轉換與區域填充 13
1.4.1 多邊形的掃描轉換 14
1.4.2 區域填充算法 15
1.5 字元的生成 22
1.5.1 點陣字元 22
1.5.2 矢量字元 23
1.5.3 字元屬性 23
1.6 圖形裁剪 23
1.6.1 線裁剪 24
1.6.2 多邊形裁剪 25
1.6.3 字元裁剪 26
1.6.4 圖形裁剪編程 26
1.7 Visual C++中基本繪圖函式 38
練習題 41
第2章 二維圖形 42
2.1 用戶坐標到螢幕坐標的變換 42
2.1.1 視窗到視口的變換內容 42
2.1.2 視窗區到視口區的坐標變換 43
2.2 二維幾何變換 44
2.2.1 基本變換 44
2.2.2 二維幾何變換的級聯 47
2.3 幾何變換程式設計案例 49
2.4 平面曲線圖 59
2.4.1 正葉線 60
2.4.2 正葉線蝴蝶結 60
2.5 平面曲執行緒序設計案例 60
練習題 63
第3章 互動技術 64
3.1 用戶接口設計 64
3.2 邏輯輸入設備與輸入處理 65
3.2.1 邏輯輸入設備 65
3.2.2 輸入模式 66
3.3 互動式繪圖技術 67
3.4 互動技術程式設計案例 68
練習題 75
第4章 簡單CAD繪圖系統開發實例 76
4.1 計算機圖形學繪圖基礎 76
4.1.1 Visual C++開發系統基本繪圖知識 77
4.1.2 計算機圖形學繪圖系統設計基本原則 79
4.1.3 圖形程式設計步驟 79
4.1.4 在Visual C++集成開發環境下程式的調試 81
4.1.5 電腦程式結構設計基礎 81
4.1.6 繪圖程式設計基本方法 82
4.2 圖形的數據結構 85
4.2.1 圖形信息的分類 85
4.2.2 圖形數據結構 85
4.2.3 計算機對數據的管理——數據檔案 86
4.2.4 圖形數據的存儲狀態 87
4.2.5 動態檔案數據結構的組織原則 87
4.2.6 簡單CAD繪圖系統編程實例中的數據結構 87
4.3 簡單CAD繪圖系統功能簡介 103
4.3.1 簡單CAD繪圖系統運行界面 103
4.3.2 簡單CAD繪圖系統功能 103
第5章 三維圖形變換 107
5.1 三維圖形幾何變換矩陣 107
5.2 三維圖形基本變換矩陣 107
5.2.1 平移變換 107
5.2.2 比例變換 108
5.2.3 繞坐標軸的旋轉變換 109
5.2.4 對稱變換 110
5.2.5 錯切變換 112
5.3 圖形的投影變換 113
5.3.1 投影變換分類 113
5.3.2 平行投影 114
5.4 三維變換程式設計案例 118
練習題 146
第6章 曲線和曲面 147
6.1 曲線曲面參數表示的基礎知識 147
6.1.1 非參數表示和參數表示 147
6.1.2 參數表示的基本特徵 148
6.1.3 曲線段之間的連續性 150
6.1.4 曲線曲面設計中的幾個概念 151
6.2 常用參數曲線 151
6.2.1 一般規則空間曲線 151
6.2.2 Bezier曲線 152
6.2.3 B樣條曲線 158
6.3 參數曲面 164
6.3.1 函式式曲面 164
6.3.2 旋轉曲面 165
6.4 常用曲面 166
6.4.1 雙曲線曲面 166
6.4.2 Bezier曲面 166
6.4.3 B樣條曲面 168
6.5 曲面與曲線編程案例 169
練習題 195
第7章 幾何造型技術 196
7.1 實體的表示模型 196
7.1.1 分解表示 197
7.1.2 構造表示 198
7.1.3 邊界表示 200
7.1.4 形體的邊界表示模型 200
7.2 求交分類 202
7.2.1 求交分類 202
7.2.2 基本的求交算法 203
7.3 圖形相交-相切程式設計案例 207
7.4 非傳統造型技術 220
7.4.1 基本概念 221
7.4.2 分形造型對模型的基本要求 221
7.4.3 分形造型的常用模型 221
7.5 分形造型套用 222
7.6 分形造型編程設計 223
練習題 238
第8章 消隱 239
8.1 線消隱 239
8.2 面消隱 240
8.2.1 區域排序算法基本思想 240
8.2.2 深度快取(Z-buffer)算法 241
8.2.3 掃描線算法 241
8.3 圖形幾何構造 242
8.4 消隱技術編程案例 245
練習題 259
第9章 真實感圖形學 260
9.1 顏色模型 260
9.1.1 CIE色度圖 260
9.1.2 常用的顏色模型 261
9.2 簡單光照明模型 263
9.2.1 Phong光照明模型 263
9.2.2 增量式光照明模型 265
9.3 局部光照明模型 266
9.4 光透射模型 267
9.4.1 透明效果的簡單模型 267
9.4.2 Whitted光透射模型 268
9.4.3 Hall光透射模型 268
9.4.4 簡單光反射透射模型 268
9.5 紋理及紋理映射 269
9.6 整體光照明模型 270
9.6.1 光線跟蹤算法 270
9.6.2 輻射度方法 272
9.7 真實感圖形學編程案例 272
練習題 321
第10章 計算機動畫 322
10.1 計算機動畫概述 322
10.2 計算機動畫的套用領域 322
10.3 計算機動畫的分類和原理 322
10.4 目前計算機動畫面臨的問題 325
10.5 計算機動畫程式設計案例 325
10.5.1 幀動畫 325
10.5.2 實時動畫 328
練習題 335
參考文獻 336