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