本書系統(tǒng)介紹Bezier曲線曲面、B樣條曲線曲面和NURBS曲線曲面的理論與算法。第1章介紹曲線曲面的基本概念及表示形式;第2章介紹二維圖形和三維圖形的程序設(shè)計方法,示范直線繪圖函數(shù)的使用方法,重點講解制作網(wǎng)格模型動畫的雙緩沖技術(shù);第3章講解三次樣條曲線、三次參數(shù)樣條曲線、Hermite樣條曲線和Cardinal曲線的原理與算法;第4章介紹三次Bezier曲線的定義算法、de Casteljau遞推算法,重點講解基于雙三次Bezier曲面片制作Utah 茶壺的算法,并在課程設(shè)計部分給出完整的代碼;第5 章介紹B 樣條的de Boor-Cox遞推定義算法、二次和三次均勻B樣條算法、非均勻B樣條曲線計算節(jié)點矢量的Hartley-Judd算法;第6章在曲線部分介紹NURBS精確表示圓弧的方法,在曲面部分重點講解NURBS構(gòu)建三維曲面如球、圓環(huán)、酒杯的原理和算法。為了改變計算幾何以數(shù)學公式推導為主的單調(diào)學習方法,增強曲線曲面的可視化效果。本書提供所有與原理配套的Visual C 源程序。這些源程序用模塊化方法編寫,注釋簡單易懂。為了降低程序的理解難度,旋轉(zhuǎn)曲面投影以*簡單的正交投影為主。對于計算機專業(yè)教師,可以深入理解原理與代碼的對應(yīng)關(guān)系;對于非計算機專業(yè)教師,可以直接運行程序,本書不追求數(shù)學上的嚴密性與完整性,而注重于根據(jù)曲線曲面的數(shù)學公式的編程實現(xiàn)。本書的所有插圖全部使用程序繪制。從數(shù)學角度的理解轉(zhuǎn)換為圖形方面的觀察,可有效提高讀者的學習興趣,實現(xiàn)將數(shù)學公式借助于編程技術(shù)表示為圖形效果的設(shè)計初衷。本書附錄部分給出了6個實驗項目及2個課程設(shè)計項目,并給出了猶他茶壺和花瓶的Visual C 源代碼。本書可作為高等院校計算機科學與技術(shù)、數(shù)字媒體技術(shù)、信息與計算科學、機械設(shè)計等專業(yè)本科生、碩士生、博士生的教材與參考書,也可供從事游戲開發(fā)、計算機建模、計算機圖形學等領(lǐng)域的科學工作者參考使用。
數(shù)學的研究對象是數(shù)與形。幾何學是研究形的一門數(shù)學學科。最早的幾何學是歐氏幾何學。阿基米德創(chuàng)立的歐氏幾何學,用剛體運動研究幾何不變量,這是最原始的幾何學。笛卡兒發(fā)現(xiàn)坐標系后,形成了解析幾何,通過坐標系將幾何問題轉(zhuǎn)化為代數(shù)問題。隨著微積分的誕生,出現(xiàn)了微分幾何。20世紀40年代發(fā)明計算機后,為計算幾何的出現(xiàn)提供了物質(zhì)基礎(chǔ),很多幾何問題都可使用計算機來解決。計算幾何是以計算機為核心的、在信息環(huán)境下新產(chǎn)生的一門幾何學。計算幾何是對物體的形狀信息進行計算機表示、分析與綜合。計算幾何的理論只有借助于計算機的編程進實現(xiàn),才能被更好地理解和應(yīng)用。
計算幾何的研究方面,國外有皮格爾(Piegl)與蒂勒(Tiller)合著的經(jīng)典教材The NURBS Book,書中重點介紹了關(guān)于NURBS 的理論和算法。作為NURBS的主要研究者,皮格爾與蒂勒提出要想從事CAD,必須了解NURBS。NURBS是計算幾何的集大成者,已成為形狀的表示、設(shè)計和數(shù)據(jù)交換的工業(yè)標準。國內(nèi)蘇步青與劉鼎元先生于1981年合著且影響深遠的《計算幾何》,開啟了我國計算幾何研究的先河。北京航空航天大學的施法中先生出版的《計算機輔助幾何設(shè)計與非均勻有理B樣條》已成為計算機幾何領(lǐng)域的翹楚,內(nèi)容涵蓋了國內(nèi)外近年來的最新研究進展及施法中先生的創(chuàng)新。
本書的研究內(nèi)容涉及Bezier、B樣條、NURBS曲線曲面。其中,數(shù)是指Bezier、B樣條、NURBS等曲線曲面理論中數(shù)學公式的嚴格推理,形是指借助于計算機的強大計算能力,將曲線曲面的數(shù)學公式表達為圖形。分形幾何的創(chuàng)始人曼德爾布羅特(Mandelbrot)曾說過,看到數(shù)學公式,我首先想到的是圖形,圖形的問題解決了,數(shù)學的問題也就解決了。
為了降低理解曲線曲面理論的難度,本書編寫的出發(fā)點是基于計算幾何的基本理論,使用Visual C 編程生成曲線曲面圖形。這些圖形包括二維曲線圖形和三維曲面圖形。三維曲面圖形主要采用最簡單的平行投影講解,這也有助于降低理解編程的難度。
本書不追求數(shù)學上的嚴密性與完整性,而注重于使用現(xiàn)有的曲線曲面的理論研究結(jié)論,編程繪制二維曲線及三維曲面。對于三維曲面,作者借助于三維圖形學技術(shù),基于雙緩沖技術(shù)建立物體的線框模型,支持鍵盤方向鍵旋轉(zhuǎn)圖形,可從各個角度旋轉(zhuǎn)曲面進行觀察。作者在大學中主要講授計算機圖形學課程,出版有普通高等教育十二五國家級規(guī)劃教材計算機圖形學系列教材(見www.klingde.com)。計算機圖形學研究的內(nèi)容是模型與渲染問題。作者在講授計算機圖形學模型時,發(fā)現(xiàn)僅使用立方體、球體、圓環(huán)等模型太過乏味,進而研究猶他茶壺,并使用Visual C 編程繪制了包含306個控制點的32片雙三次曲面。調(diào)用Visual C 編寫的不同程序模塊,學生可以選擇繪制壺蓋、壺嘴、壺體、壺柄、壺嘴等。這與直接調(diào)用OpenGL或3DS中的茶壺模型,只能繪制茶壺的整體效果是不同的。在此基礎(chǔ)上,指導博創(chuàng)研究所的學生基于B樣條方法與NURBS方法,使用MFC 框架建立不同旋轉(zhuǎn)體的曲面模型。
博創(chuàng)研究所開發(fā)了一套平轉(zhuǎn)立系統(tǒng),只要給出一段NURBS二維曲線,就可直接生成其三維模型,并可使用鍵盤方向鍵旋轉(zhuǎn)進行交互觀察。作為教學相長的范例,學生的快速進步,促使我產(chǎn)生了編寫一本適合于應(yīng)用型本科院校使用的計算幾何教材的想法,而該教材應(yīng)該是圖文并茂的。為了編好本書,作者開發(fā)了近100 多個源程序,并詳細編寫了程序注釋。博創(chuàng)研究所的石長盛、李振林、陶作檸等同學全程參與了程序的設(shè)計與開發(fā),付出了辛苦的努力,在此一并致謝。本書不包含任何手繪插圖,每幅插圖全部由作者提供的Visual C 算法生成。
插圖準確、圖例豐富、立體感強,易于理解,更便于教與學。
本書的特點是理論與代碼一一對應(yīng)。代碼方面模塊性強、注釋規(guī)范、容易理解。這些代碼不僅可以從實踐上印證理論的正確性,也從圖形可視化角度展示理論應(yīng)用的效果。本書附錄部分給出了6個實驗項目及2個課程設(shè)計項目,并給出了猶他茶壺和花瓶的源代碼。讀者可以通過編程提高對理論的認識。讀者學習本書的先行課程包括高等數(shù)學、C 程序設(shè)計等。
本書理論部分由孔令德編寫,上機實驗及課程設(shè)計部分由康鳳娥編寫。全書由孔令德提出編寫提綱并統(tǒng)稿、校對。康鳳娥上機調(diào)試了全部程序并繪制了插圖。
作者提供計算幾何算法與實現(xiàn)QQ群,群號為229275085。群內(nèi)的共享文件包括與教學配套的電子課件及相關(guān)的案例源程序等教學資源,歡迎讀者下載使用。請掃描微信二維碼或通過QQ(307622194)與作者聯(lián)系。就書中理論和編程方面的問題,作者將為讀者提供在線答疑。
本書適合于計算機科學與技術(shù)專業(yè)、數(shù)字媒體技術(shù)專業(yè)、數(shù)學與應(yīng)用數(shù)學專業(yè)以及機械設(shè)計與制造專業(yè)的本科生與研究生使用。建議本科生的學習重點為Bezier曲線曲面,研究生的學習重點為B樣條與NURBS曲線曲面。
王陽明說過:知者行之始,行者知之成,讓我們打開計算機,開始學習基于動畫的計算幾何學,以物體的幾何形狀來加深對枯燥數(shù)學公式的理解吧。
作
者
于太原萬達龍湖廣場
2017 年7 月7 日
孔令德,太原工業(yè)學院計算機系系主任,長期從事教育管理與計算機圖形學、多媒體等課程的教學工作,著有《計算機圖形學》、《大學計算機基礎(chǔ)》等教材。