《計(jì)算機(jī)圖形學(xué)》以培養(yǎng)應(yīng)用型人才為目標(biāo)進(jìn)行內(nèi)容規(guī)劃,突出對(duì)應(yīng)用能力的培養(yǎng)和訓(xùn)練。全書(shū)內(nèi)容包括緒論、計(jì)算機(jī)圖形系統(tǒng)、Visual C 6.0圖形編程基礎(chǔ)、基本圖元生成、自由曲線曲面的設(shè)計(jì)、圖形變換、圖形裁剪、三維幾何造型、分形曲線與函數(shù)迭代系統(tǒng)和計(jì)算機(jī)圖形學(xué)專題設(shè)計(jì)等。本書(shū)按照知識(shí)點(diǎn)錄制了全部課程視頻,可以借助二維碼通過(guò)掃一掃方式學(xué)習(xí)。 《計(jì)算機(jī)圖形學(xué)》可作為高校本科生計(jì)算機(jī)及相關(guān)專業(yè)課程的教材或參考書(shū),也可作為計(jì)算機(jī)圖形學(xué)愛(ài)好者的入門(mén)書(shū)籍。
前 言
計(jì)算機(jī)圖形學(xué)是20世紀(jì)40年代開(kāi)始起步,70年代時(shí)隨著計(jì)算機(jī)硬件性價(jià)比大幅提升而得到迅速發(fā)展,尤其在1990年以后以計(jì)算機(jī)圖形學(xué)為支撐的科學(xué)計(jì)算機(jī)可視化、虛擬現(xiàn)實(shí)、計(jì)算機(jī)動(dòng)畫(huà)等技術(shù)成果進(jìn)入尋常百姓的日常生活中,更加促進(jìn)了計(jì)算機(jī)圖形學(xué)軟、硬件的高速發(fā)展。高等學(xué)校的計(jì)算機(jī)科學(xué)與技術(shù)、軟件工程、數(shù)字媒體技術(shù)、數(shù)字媒體藝術(shù)、動(dòng)畫(huà)等專業(yè)一般把計(jì)算機(jī)圖形學(xué)列為專業(yè)(基礎(chǔ))課。計(jì)算機(jī)圖形學(xué)無(wú)論是理論還是應(yīng)用,其內(nèi)容都很龐大。在實(shí)際教學(xué)中受限于課時(shí)安排,對(duì)計(jì)算機(jī)圖形學(xué)內(nèi)容的取舍非常關(guān)鍵。本書(shū)將應(yīng)用型人才培養(yǎng)的目標(biāo)貫穿到教材設(shè)計(jì)中,刪減大量繁雜的公式推導(dǎo),但保留直接與算法相關(guān)的理論內(nèi)容。本書(shū)編寫(xiě)中注重將計(jì)算機(jī)圖形學(xué)的基本理論與讀者日常接觸的圖形軟件進(jìn)行對(duì)比介紹,便于讀者理解概念掌握?qǐng)D形算法本質(zhì),并進(jìn)一步深化應(yīng)用實(shí)現(xiàn)綜合場(chǎng)景案例設(shè)計(jì)。
本書(shū)的作者在計(jì)算機(jī)圖形學(xué)課程的精品課、雙語(yǔ)教學(xué)示范課、資源共享課建設(shè)中做了多年的探索,在教學(xué)實(shí)踐和科研成果的基礎(chǔ)上設(shè)計(jì)內(nèi)容結(jié)構(gòu)。全書(shū)由10章組成。第一章緒論,介紹計(jì)算機(jī)圖形學(xué)及其有關(guān)概念,計(jì)算機(jī)圖形學(xué)的發(fā)展、應(yīng)用及相關(guān)技術(shù)。第二章計(jì)算機(jī)圖形系統(tǒng),介紹計(jì)算機(jī)圖形系統(tǒng)的功能、結(jié)構(gòu),圖形輸入輸出設(shè)備,顯示器、繪圖儀、3D打印機(jī)的工作原理,圖形標(biāo)準(zhǔn)與軟件等。第三章Visual C 6.0圖形編程基礎(chǔ),重點(diǎn)介紹與圖形相關(guān)的Visual C 6.0應(yīng)用程序開(kāi)發(fā)方法,包括圖形設(shè)備接口和圖形程序設(shè)計(jì),交互圖形設(shè)計(jì)的鼠標(biāo)消息處理、捕捉鼠標(biāo)、鼠標(biāo)橡皮筋技術(shù)、菜單設(shè)計(jì)等;第四章基本圖元生成,介紹基本圖元點(diǎn)、直線、圓(圓弧)的生成算法,區(qū)域填充算法,點(diǎn)陣字符和矢量字符生成。第五章自由曲線曲面的設(shè)計(jì),重點(diǎn)闡述Hermite、Cardinal、Bézier和B樣條曲線的定義、性質(zhì),矩陣表達(dá)式,對(duì)曲線形狀的控制能力;Coons、Bézier、B樣條曲面的參數(shù)表示,初始邊界條件,曲面形狀的控制,曲面片的拼接。第六章圖形變換,介紹二維幾何變換、三維幾何變換和投影變換。第七章圖形裁剪,內(nèi)容包括二維觀察流程、窗口-視區(qū)變換、二維裁剪和三維裁剪等。第八章三維幾何造型,介紹幾何造型中的基本元素,形體的存儲(chǔ)模型和三維形體的表示方法。第九章分形曲線與函數(shù)迭代系統(tǒng),描述分形幾何特征,典型分形曲線遞歸算法,迭代函數(shù)系統(tǒng)與算法實(shí)現(xiàn),以及IFS植物構(gòu)形。第十章計(jì)算機(jī)圖形學(xué)專題設(shè)計(jì),提供了兩個(gè)專題設(shè)計(jì)案例,分別是魚(yú)群的卡通圖形設(shè)計(jì)、自由曲面與IFS結(jié)合的景物設(shè)計(jì)。每一個(gè)案例的設(shè)計(jì)實(shí)現(xiàn)均需要結(jié)合多個(gè)章節(jié)的內(nèi)容才能最終得以完成。同時(shí)給出了一個(gè)小型交互式繪圖軟件的案例,其目標(biāo)是模擬AutoCAD軟件在Visual C 6.0環(huán)境下設(shè)計(jì)一個(gè)小型交互繪圖軟件。
本書(shū)在內(nèi)容設(shè)計(jì)上具有如下特點(diǎn):
(1) 以培養(yǎng)創(chuàng)新型應(yīng)用人才為目標(biāo),突出對(duì)學(xué)生應(yīng)用能力的培養(yǎng)與訓(xùn)練。
一是面向應(yīng)用能力的培養(yǎng)與訓(xùn)練,本教材精選課程內(nèi)容,注重理論聯(lián)系實(shí)際,將市場(chǎng)上主流圖形軟件的相應(yīng)功能引入課程中進(jìn)行對(duì)比分析與比較,便于學(xué)生加深理解,更重要的是強(qiáng)化了工程應(yīng)用的概念。
二是教材的內(nèi)容組織上,突出案例的選擇和實(shí)例設(shè)計(jì)。從總體結(jié)構(gòu)上專門(mén)設(shè)計(jì)了圖形編程基礎(chǔ)(第三章)和計(jì)算機(jī)圖形學(xué)專題設(shè)計(jì)(第十章)內(nèi)容,強(qiáng)化應(yīng)用能力的訓(xùn)練。
三是每章的引導(dǎo)案例和案例導(dǎo)學(xué),精心選擇了影視大片、動(dòng)畫(huà)游戲、自然界奇妙景觀、數(shù)控加工、互聯(lián)網(wǎng)技術(shù)等與計(jì)算機(jī)圖形學(xué)相關(guān)的內(nèi)容進(jìn)行整理,增強(qiáng)了課程內(nèi)容與實(shí)際生活的聯(lián)系,有助于激發(fā)讀者探求科學(xué)前沿技術(shù)的好奇心。
四是每章末給出了本章的知識(shí)結(jié)構(gòu)圖,知識(shí)結(jié)構(gòu)圖更切合計(jì)算機(jī)圖形學(xué)的特點(diǎn),用圖形化的語(yǔ)言描述課程知識(shí)點(diǎn)內(nèi)在的聯(lián)系。
(2) 引進(jìn)新技術(shù)參與教學(xué)實(shí)現(xiàn)真正的貫穿式 立體化教學(xué)。
一是本書(shū)作者按照知識(shí)點(diǎn)錄制了全部課程視頻,大部分課程視頻短小以突出知識(shí)點(diǎn)的講解,讀者通過(guò)訪問(wèn)課程視頻可以隨時(shí)隨地學(xué)習(xí)感興趣的內(nèi)容。
二是借助多媒體技術(shù),將書(shū)中重點(diǎn)內(nèi)容做成視頻、音頻、動(dòng)畫(huà)等模式,尤其是Visual C 6.0圖形編程設(shè)計(jì)和小型交互繪圖軟件,均在實(shí)際開(kāi)發(fā)環(huán)境中進(jìn)行實(shí)時(shí)演示操作。
三是借助二維碼技術(shù),將課程內(nèi)容通過(guò)掃一掃方式進(jìn)行學(xué)習(xí),實(shí)現(xiàn)了教學(xué)中的互聯(lián)網(wǎng) 碎片化概念。
四是本書(shū)內(nèi)容的更新體現(xiàn)了動(dòng)態(tài)性,可以實(shí)時(shí)更新學(xué)生的優(yōu)秀作品以及不斷出現(xiàn)的新技術(shù)和新應(yīng)用。
本書(shū)由遼寧石油化工大學(xué)張燕、李楠、潘曉光編著。大連鐵道大學(xué)的任洪海編寫(xiě)了第四章和第十章的部分內(nèi)容。遼寧石油化工大學(xué)王宇彤為課程視頻錄制和后期剪輯合成提供了完整的技術(shù)支持。盧紫微、韓云萍、劉培勝參與了課件設(shè)計(jì)、實(shí)例程序編寫(xiě)等工作。數(shù)字媒體技術(shù)專業(yè)學(xué)生王俊力、張滿玉為本書(shū)提供了部分程序?qū)嵗a以及部分插圖繪制。
《計(jì)算機(jī)圖形學(xué)》課程在建設(shè)過(guò)程中始終得到紀(jì)玉波教授的大力支持,在此表示誠(chéng)摯的謝意!遼寧北四達(dá)數(shù)字信息科技有限公司軟件設(shè)計(jì)師王嘯,大連天工建筑設(shè)計(jì)有限公司高級(jí)工程師李鐸參與了本書(shū)的案例設(shè)計(jì),并結(jié)合公司和企業(yè)實(shí)際開(kāi)發(fā)了其他案例。因受篇幅限制,這些案例可以通過(guò)掃一掃獲得。
本書(shū)在編寫(xiě)過(guò)程中借鑒了國(guó)內(nèi)外許多專家、學(xué)者的觀點(diǎn),參考了相關(guān)教材、專著、網(wǎng)絡(luò)資料,在此向有關(guān)作者表示衷心的感謝!
由于編者水平有限,書(shū)中難免存在不足和疏漏,敬請(qǐng)各位專家、讀者批評(píng)指正。
編 者
目 錄
第一章 緒論 1
第一節(jié) 計(jì)算機(jī)圖形學(xué)及相關(guān)概念 3
第二節(jié) 計(jì)算機(jī)圖形學(xué)的發(fā)展簡(jiǎn)況 5
一、硬件平臺(tái) 5
二、基礎(chǔ)理論 5
三、實(shí)際應(yīng)用 6
四、SIGGRAPH 6
第三節(jié) 計(jì)算機(jī)圖形學(xué)的應(yīng)用領(lǐng)域 7
一、計(jì)算機(jī)輔助設(shè)計(jì)與制造 7
二、科學(xué)計(jì)算可視化 7
三、虛擬現(xiàn)實(shí) 8
四、計(jì)算機(jī)藝術(shù) 8
五、計(jì)算機(jī)動(dòng)畫(huà)與娛樂(lè) 8
六、地理和自然資源的圖形顯示 9
七、教學(xué)與培訓(xùn) 9
八、圖形用戶接口 9
第四節(jié) 計(jì)算機(jī)圖形學(xué)的相關(guān)開(kāi)發(fā)技術(shù) 10
一、OpenGL技術(shù) 10
二、ACIS技術(shù) 10
三、DirectX技術(shù) 10
四、Java3D技術(shù) 11
五、VRML技術(shù) 11
六、Web 3D技術(shù) 12
本章知識(shí)結(jié)構(gòu)圖 12
本章小結(jié) 13
復(fù)習(xí)思考題 14
第二章 計(jì)算機(jī)圖形系統(tǒng) 15
第一節(jié) 計(jì)算機(jī)圖形系統(tǒng)的組成 16
一、計(jì)算機(jī)圖形系統(tǒng)的功能 16
二、計(jì)算機(jī)圖形系統(tǒng)的結(jié)構(gòu) 17
第二節(jié) 圖形輸入設(shè)備及數(shù)據(jù)輸入 20
一、圖形輸入設(shè)備 20
二、數(shù)據(jù)輸入 22
第三節(jié) 圖形輸出設(shè)備 23
第四節(jié) 典型硬件設(shè)備的工作原理 27
一、圖形顯示與觀察設(shè)備 27
二、繪圖設(shè)備的工作原理 32
三、3D打印機(jī)的工作原理 33
第五節(jié) 圖形軟件及標(biāo)準(zhǔn) 35
一、圖形軟件 35
二、圖形標(biāo)準(zhǔn) 35
本章知識(shí)結(jié)構(gòu)圖 36
本章小結(jié) 37
復(fù)習(xí)思考題 38
第三章 Visual C 6.0圖形編程基礎(chǔ) 39
第一節(jié) Visual C 6.0應(yīng)用程序
開(kāi)發(fā)方法 40
一、Visual C 的集成開(kāi)發(fā)環(huán)境 40
二、應(yīng)用程序工程的建立方法 40
三、輸入源程序進(jìn)行程序設(shè)計(jì) 43
第二節(jié) 圖形設(shè)備接口和圖形程序設(shè)計(jì) 44
一、圖形設(shè)備接口 44
二、繪制基本圖形 46
三、畫(huà)筆與畫(huà)刷 50
四、文本顯示 55
第三節(jié) 鼠標(biāo)編程 56
一、鼠標(biāo)消息處理 57
二、捕捉鼠標(biāo) 58
三、鼠標(biāo)編程綜合示例 58
第四節(jié) 菜單程序設(shè)計(jì) 63
一、菜單編輯器 63
二、菜單消息響應(yīng) 65
三、菜單設(shè)計(jì)綜合示例 66
本章知識(shí)結(jié)構(gòu)圖 68
本章小結(jié) 69
復(fù)習(xí)思考題 69
第四章 基本圖元生成 71
第一節(jié) 點(diǎn)的生成 73
第二節(jié) 直線的生成 74
一、DDA算法 74
二、Bresenham算法 78
第三節(jié) 圓的生成 83
一、坐標(biāo)法 83
二、折線逼近法 85
三、Bresenham圓(圓弧)生成算法 87
第四節(jié) 區(qū)域填充的基本應(yīng)用和概念 91
一、畫(huà)圖軟件中的區(qū)域填充 91
二、AutoCAD中的區(qū)域填充 92
三、區(qū)域填充的相關(guān)概念 93
第五節(jié) 區(qū)域填充算法 94
一、種子填充算法與實(shí)例解析 94
二、掃描線種子填充算法及
實(shí)例解析 99
三、掃描線轉(zhuǎn)換填充算法 103
四、邊填充算法及其改進(jìn)方法 108
第六節(jié) 字符的生成 109
一、點(diǎn)陣字符 110
二、矢量字符 111
三、點(diǎn)陣字符和矢量字符的比較 111
本章知識(shí)結(jié)構(gòu)圖 112
本章小結(jié) 112
復(fù)習(xí)思考題 113
第五章 自由曲線曲面的設(shè)計(jì) 115
第一節(jié) 自由曲線與曲面的數(shù)學(xué)基礎(chǔ) 117
一、曲線曲面表示 117
二、插值和逼近 118
三、參數(shù)連續(xù)性和幾何連續(xù)性 120
第二節(jié) Hermite樣條曲線 121
一、樣條曲線的概述 121
二、Hermite樣條邊界條件與參數(shù)
方程表達(dá) 122
三、Hermite樣條曲線的調(diào)和函數(shù)及
坐標(biāo)分量表達(dá) 124
四、Hermite樣條曲線的特點(diǎn) 124
第三節(jié) Cardinal曲線 127
一、Cardinal曲線的初始條件 127
二、Cardinal曲線的方程與矩陣
推導(dǎo) 128
三、Cardinal樣條曲線的調(diào)和
函數(shù) 129
四、Hermite和Cardinal樣條曲線的
構(gòu)圖特點(diǎn) 130
第四節(jié) Bézier曲線 132
一、Bézier曲線的定義及數(shù)學(xué)
表達(dá)式 133
二、Bézier曲線的性質(zhì) 133
三、三次Bézier曲線的調(diào)和
函數(shù)與數(shù)學(xué)表達(dá) 135
四、Bézier曲線的光滑連接 137
五、Bézier曲線的構(gòu)圖特點(diǎn) 138
第五節(jié) B樣條曲線 140
一、B樣條曲線的定義 140
二、三次B樣條曲線調(diào)和函數(shù)及
參數(shù)方程 140
三、B樣條曲線的性質(zhì) 142
四、三次B樣條的幾種特殊情況 145
五、控制三次B樣條曲線幾何
形態(tài)的方法 146
第六節(jié) Coons曲面 151
第七節(jié) Bézier曲面 154
一、Bézier曲面的數(shù)學(xué)表示式 154
二、雙三次Bézier曲面 154
第八節(jié) B樣條曲面 157
一、B樣條曲面的數(shù)學(xué)表示式 157
二、雙三次B樣條曲面 157
本章知識(shí)結(jié)構(gòu)圖 161
本章小結(jié) 162
復(fù)習(xí)思考題 162
第六章 圖形變換 163
第一節(jié) AutoCAD中的圖形變換 164
第二節(jié) 幾何變換的基本原理 165
第三節(jié) 平移變換與實(shí)例設(shè)計(jì) 166
一、二維平移變換 166
二、三維平移變換 166
第四節(jié) 比例變換與實(shí)例設(shè)計(jì) 168
一、二維比例變換 168
二、三維比例變換 171
第五節(jié) 旋轉(zhuǎn)變換與實(shí)例設(shè)計(jì) 172
一、二維旋轉(zhuǎn)變換 172
二、三維旋轉(zhuǎn)變換 174
第六節(jié) 對(duì)稱變換與實(shí)例設(shè)計(jì) 178
一、二維對(duì)稱變換 178
二、三維對(duì)稱變換 184
第七節(jié) 錯(cuò)切變換與實(shí)例設(shè)計(jì) 185
一、二維錯(cuò)切變換 185
二、三維錯(cuò)切變換 186
第八節(jié) 復(fù)合變換與仿射變換 188
一、復(fù)合變換 188
二、仿射變換 189
第九節(jié) 投影變換 190
一、投影變換的分類(lèi) 190
二、平行投影 191
三、透視投影 193
本章知識(shí)結(jié)構(gòu)圖 195
本章小結(jié) 196
復(fù)習(xí)思考題 196
第七章 圖形裁剪 198
第一節(jié) 二維觀察流程 200
第二節(jié) 窗口視區(qū)的變換 202
第三節(jié) 圖形裁剪的基本概念 206
一、點(diǎn)的裁剪 207
二、直線段和窗口的關(guān)系 207
第四節(jié) 直線段裁剪 207
一、編碼裁剪算法 208
二、中點(diǎn)分割裁剪算法 212
三、參數(shù)化線段裁剪算法 213
第五節(jié) 多邊形裁剪 215
一、逐邊裁剪法 216
二、雙邊裁剪法 219
第六節(jié) 其他類(lèi)型的圖形裁剪 220
一、非矩形裁剪窗口的線段裁剪 220
二、曲線的裁剪 220
三、字符的裁剪 220
第七節(jié) 三維裁剪 221
一、三維裁剪空間 221
二、三維編碼裁剪算法 222
本章知識(shí)結(jié)構(gòu)圖 224
本章小結(jié) 225
復(fù)習(xí)思考題 225
第八章 三維幾何造型 227
第一節(jié) 三維幾何造型中的元素 228
一、點(diǎn) 229
二、邊 229
三、環(huán) 229
四、面 229
五、體 230
六、體素 231
第二節(jié) 形體的存儲(chǔ)模型 231
一、線框模型 231
二、表面模型 232
三、實(shí)體模型 233
第三節(jié) 三維形體的表示方法 234
一、構(gòu)造實(shí)體幾何表示法 235
二、掃描表示法 236
三、分解模型表示法 237
四、邊界表示法 239
五、混合模型表示法 240
本章知識(shí)結(jié)構(gòu)圖 240
本章小結(jié) 241
復(fù)習(xí)思考題 241
第九章 分形曲線與函數(shù)迭代系統(tǒng) 242
第一節(jié) 分形的提出與分形維數(shù) 244
一、分形的萌芽 244
二、分形維數(shù) 245
三、分形的幾何特征 246
四、分形圖形與歐氏圖形的區(qū)別 247
第二節(jié) 典型分形曲線的遞歸算法 247
一、Koch曲線的遞歸算法及
雪花的生成 247
二、Peano_Hilbert曲線 250
三、Sierpinski三角形與Sierpinski
地毯 252
第三節(jié) 迭代函數(shù)系統(tǒng) 253
一、仿射變換與IFS碼 254
二、IFS迭代算法 255
三、IFS植物構(gòu)形 259
本章知識(shí)結(jié)構(gòu)圖 261
本章小結(jié) 262
復(fù)習(xí)思考題 262
第十章 計(jì)算機(jī)圖形學(xué)專題設(shè)計(jì) 263
第一節(jié) 魚(yú)群的卡通圖形設(shè)計(jì) 263
一、利用B樣條曲線實(shí)現(xiàn)單尾魚(yú)
設(shè)計(jì) 264
二、利用圖形變換實(shí)現(xiàn)魚(yú)群設(shè)計(jì) 266
三、利用區(qū)域填充的著色處理 269
第二節(jié) 自由曲面與IFS結(jié)合的景物
設(shè)計(jì) 269
一、二維圖形的迭代函數(shù)系統(tǒng)
(IFS)的建立 270
二、圖形變換與三維樹(shù)木生成 270
三、果樹(shù)造型設(shè)計(jì) 272
四、自由曲面與山坡模擬 273
第三節(jié) 一個(gè)小型交互式繪圖軟件設(shè)計(jì) 274
一、微機(jī)交互繪圖軟件包的典范AutoCAD 274
二、繪圖軟件設(shè)計(jì)原則 275
三 文檔/視圖結(jié)構(gòu) 276
四、小型交互式繪圖軟件的
設(shè)計(jì)與實(shí)現(xiàn) 277
本章小結(jié) 280
復(fù)習(xí)思考題 281
參考文獻(xiàn) 282