本書是計算機圖形學入門教程,以VC 與OpenGL為工具講解計算機圖形學以及動畫制作的基本知識。
第1章通過一些有趣的實例直觀地展示了一些簡單的計算機圖形繪制與動畫制作方法,同時讓讀者了解、熟悉并逐步掌握VC 繪圖相關類及函數的使用;第2章講解二維直線與曲線繪制方法以及區域填充的基本內容;第3章學習三維圖形投影、消隱等內容;第4章通過一些典型實例介紹OpenGL;第5、6章講解樣條曲面、幾何造型與光照模型;第7、8、9章研究分析建模與動畫實例。
本書適合作為計算機科學與技術、軟件工程、信息與計算科學、數字媒體技術、機械與建筑設計等專業的計算機圖形學教材,也可供對計算機圖形動畫制作感興趣的程序設計人員參考。
(1)計算機圖形學入門教程,以VC 與OpenGL為工具講解計算機圖形學以及動畫制作的基本知識。(2)通過一些有趣的實例直觀展示一些計算機圖形繪制與動畫制作方法。(3)適用于計算機科學與技術、軟件工程、信息與計算科學、數字媒體技術、機械與建筑設計等專業的計算機圖形學教材。
目錄
第1章VC 繪圖程序設計/1
1.1使用CDC類函數繪制圖形1
1.1.1使用單文檔程序繪圖1
1.1.2繪制具有真實感的三維圖形7
1.1.3交互繪圖程序設計10
1.1.4繪制矩形15
1.1.5在指定位置輸出文本16
1.2畫筆與畫刷19
1.2.1畫筆類及其函數19
1.2.2畫刷類20
1.3位圖圖像操作21
1.3.1提取位圖上一點的顏色值21
1.3.2獲取圖像區域的顏色值23
1.4繪圖與動畫程序實例24
1.4.1小圓的彈性運動24
1.4.2拋物運動27
1.4.3小圓沿著螺旋線上升29
1.4.4逐幀動畫制作31
1.4.5使用Timer事件函數繪制圖形32
1.4.6移動鼠標進行書寫35
1.5Win32應用程序中繪圖與動畫制作36
1.5.1用多種填充形式制作動畫36
1.5.2使用顏色漸變制作動畫37
習題138
第2章二維圖形繪制與填充/43
2.1直線段繪制算法43
2.1.1使用直線方程計算函數值43
2.1.2DDA微分繪制方法44
2.1.3Bresenham算法45〖1〗計算機圖形學(VC 實現)(第2版)目錄[3]〖3〗2.2二次曲線繪制47
2.2.1使用方程繪制二次曲線48
2.2.2一般平面曲線的繪制50
2.2.3圓的繪制算法研究52
2.2.4拋物線的平移與旋轉55
2.2.5二次貝塞爾曲線繪制算法56
2.3擬合曲線59
2.3.1最小二乘法擬合59
2.3.2貝塞爾曲線61
2.3.3B樣條曲線65
2.4插值曲線66
2.4.1簡單的逐段多項式插值方法67
2.4.2Hermite曲線67
2.4.3樣條曲線68
2.5基于代數方程的基本規則圖形填充70
2.5.1矩形與三角形填充70
2.5.2橢圓填充72
2.5.3拋物線圍成的封閉區域填充73
2.6多邊形填充73
2.6.1多邊形填充的復雜性分析74
2.6.2掃描線填充75
2.6.3種子填充80
2.7二維分形圖繪制82
2.7.1繪制樹82
2.7.2繪制分形山84
習題285
第3章三維數據的二維投影/89
3.1三維數據投影89
3.1.1三維數據與二維顯示89
3.1.2繪制空間直角坐標系90
3.2三維螺旋線的平行投影91
3.2.1參數方程及三維空間點的二維繪制91
3.2.2不同角度的三維螺旋線投影93
3.3三維數據的透視投影95
3.3.1平行投影與透視投影95
3.3.2觀察坐標系下的一點透視投影96
3.4裁剪98
3.4.1二維圖形裁剪98
3.4.2三維圖形裁剪98
3.5視點變化下的多面體繪制99
3.5.1線框正方體投影繪制99
3.5.2視點變化下的線框正方體繪制101
3.6隱藏面檢測101
3.6.1隱藏線面101
3.6.2一個正方體的六個面102
3.6.3背面檢測方法103
3.6.4多面體的隱藏面計算104
3.6.5其他檢測方法104
習題3106
第4章OpenGL/108
4.1VC 中運行OpenGL程序108
4.1.1在VC 中加入glut108
4.1.2繪制點與線109
4.1.3繪制三角形與四邊形110
4.2OpenGL函數解析(一)114
4.2.1顏色設置函數glClearColor與glColor114
4.2.2繪制函數glBegin與glEnd115
4.2.3窗口初始化函數glutInitWindowSize等116
4.2.4OpenGL核心函數116
4.3OpenGL函數解析(二)117
4.3.1調用函數繪制形體117
4.3.2裁剪函數glOrtho119
4.3.3glutSolidSphere等119
4.3.4光照函數glLight120
4.3.5OpenGL實用函數120
4.4一個運動的正方體121
4.4.1三維正方體繪制與函數gluLookAt121
4.4.2OpenGL旋轉函數glRotate123
4.4.3使用鼠標控制旋轉軸125
4.5具有顏色插值效果的多面體126
4.5.1多面體繪制126
4.5.2修改參數128
4.6OpenGL函數解析(三)129
4.6.1平移函數glTranslate與縮放函數glScale129
4.6.2面法向設置函數glNormal3fv129
4.6.3雙緩存函數glutSwapBuffers129
4.6.4透視投影函數glFrustum130
4.6.5工具函數glut131
4.7OpenGL交互操作函數132
4.7.1鼠標操作132
4.7.2鍵盤操作133
4.7.3菜單制作134
4.8繪制實例135
4.8.1繪制五角星135
4.8.2運動的彩色正方體137
習題4140
第5章樣條曲面/147
5.1樣條曲線147
5.1.1三維空間貝塞爾曲線147
5.1.2曲線的拼接148
5.1.3三維空間B樣條曲線148
5.1.4三維空間分段插值曲線151
5.2貝塞爾曲面151
5.2.1貝塞爾曲面的定義152
5.2.2雙一次貝塞爾曲面152
5.2.3雙二次貝塞爾曲面154
5.2.4雙三次貝塞爾曲面的16個控制點155
5.2.5曲面特性157
5.3B樣條曲面繪制157
5.3.1B樣條曲面定義157
5.3.2雙二次B樣條曲面158
5.4OpenGL曲線曲面繪制160
5.4.1曲線繪制160
5.4.2曲面繪制162
5.4.3繪制光滑曲面165
5.5OpenGL函數解析(四)167
5.5.1計算二維網格函數glEvalMesh167
5.5.2二維求值函數glMap2f168
習題5169
第6章幾何造型與光照模型/174
6.1幾何造型基本單元的組織174
6.1.1線框模型175
6.1.2表面模型175
6.1.3實體模型176
6.2實體模型構造方法177
6.2.1邊界表示法177
6.2.2分解表示法178
6.2.3掃描造型法179
6.3場景構造與模型的重用180
6.3.1場景構造180
6.3.2模型重用181
6.3.3布爾運算181
6.4三維數據模型: 地形圖182
6.4.1繪制地形圖程序182
6.4.2程序結構185
6.4.3讀取數據文件186
6.4.4網格地形繪制186
6.4.5加入燈光效果188
6.5OpenGL中的光照效果189
6.5.1按右鍵移動光源189
6.5.2安裝多個光源192
6.5.3多個光源下的多個球體194
6.6OpenGL光照函數195
6.6.1關于glLight195
6.6.2多面體的光照效果196
6.7簡單光照模型198
6.7.1鏡面反射與視點位置198
6.7.2漫反射與環境光200
6.7.3Phong光照模型201
6.8明暗插值與陰影生成202
6.8.1明暗插值方法202
6.8.2陰影生成203
6.8.3透明性203
6.8.4整體光照模型204
習題6204
第7章紋理映射: 飄動的圖像與旋轉的地球/208
7.1使用Win32應用程序運行OpenGL程序208
7.1.1關于Win32應用程序208
7.1.2一個飄動的圖像210
7.1.3修改程序制作更多的飄動效果220
7.2構建OpenGL程序運行框架223
7.2.1函數CreateGLWindow223
7.2.2函數KillGLWindow223
7.2.3函數LRESULT CALLBACK
WndProc224
7.2.4函數int WINAPI
WinMain224
7.2.5OpenGL的glaux輔助函數225
7.3網格制作與圖像映射226
7.3.1頂點生成226
7.3.2網格制作226
7.3.3運動的網格227
7.3.4圖像定義為紋理228
7.3.5圖像映射到網格228
7.4OpenGL函數解析(五)229
7.4.1OpenGL紋理映射229
7.4.2OpenGL紋理定義函數glTexImage229
7.4.3OpenGL紋理控制函數glTexParameter230
7.4.4紋理與多邊形顏色的融合230
7.4.5OpenGL紋理坐標生成函數glTexCoord231
7.4.6OpenGL紋理映射函數應用實例232
7.5旋轉的地球235
7.5.1程序實現235
7.5.2去掉圖像的白邊238
7.5.3球的上下左右移動238
習題7239
第8章不規則圖形: 粒子系統與迭代吸引子/241
8.1使用粒子系統制作爆炸效果241
8.1.1粒子系統241
8.1.2爆炸效果的程序實現241
8.1.3程序解析246
8.1.4修改程序實現更多效果248
8.1.5使用VC 制作爆炸效果250
8.1.6使用3ds Max制作下雪動畫252
8.2基于圖像的圖形繪制254
8.2.1圖像動畫制作254
8.2.2基于圖像的三維圖形建模255
8.3OpenGL圖像操作256
8.3.1二值圖形繪制256
8.3.2讀寫像素258
8.3.3像素復制261
8.4OpenGL函數解析(六)263
8.4.1OpenGL函數glDrawBuffer與glReadBuffer263
8.4.2OpenGL函數glutBitmapCharacter264
8.4.3OpenGL圖像操作函數266
8.5迭代吸引子圖形繪制266
8.5.1正弦函數與二元二次隨機多項式函數迭代267
8.5.2調整正弦函數觀察迭代結果268
8.5.3離散余弦變換基函數作為輔助函數269
習題8271
第9章飛機動畫制作與改進/275
9.1使用單文檔運行OpenGL程序275
9.1.1單文檔OpenGL程序275
9.1.2星空閃爍動畫279
9.1.3將項目框架加入到VC 選項中281
9.2飛機模型282
9.2.1運行飛機動畫游戲程序282
9.2.2飛機數據模型分析284
9.2.3OpenGL材質函數glMaterialfv291
9.3動畫制作294
9.3.1飛機的飛行294
9.3.2發射子彈295
9.3.3鍵盤的使用296
9.3.4關于動畫297
習題9298
附錄A期末試題/299
參考文獻/317