跟國(guó)內(nèi)大多數(shù)計(jì)算機(jī)輔助幾何造型或計(jì)算幾何的教材不同,《Focus on Curves and Surfaces》介紹Bezier的方法簡(jiǎn)單,讓人易于接受。現(xiàn)將本節(jié)內(nèi)容翻譯如下,若有錯(cuò)誤,請(qǐng)指出。國(guó)內(nèi)教材上來(lái)就是給出定義,而她是按幾何方法推導(dǎo)出了二次Bezier曲線(xiàn)的伯恩斯坦(Bernstein)基函數(shù),讓人豁然開(kāi)朗。
==================================================================================================================================================
Bezier曲線(xiàn)的參數(shù)方程定義 Bezier Curves Defined in Parametric Terms
原來(lái)的CAD/CAM工具和高精度的機(jī)器設(shè)備、工程師和繪圖師繪制的曲線(xiàn)非常粗糙,精度不高。典型地,他們先標(biāo)記出曲線(xiàn)上很少的幾個(gè)點(diǎn),再使用一個(gè)曲線(xiàn)板或其它類(lèi)似的工具畫(huà)出一條通過(guò)這些點(diǎn)的最佳配合的曲線(xiàn)。當(dāng)引入計(jì)算機(jī)輔助制造技術(shù)后,這種方法就不能接受啦,因?yàn)樽詣?dòng)化的設(shè)備可以制造出高精度的零件。Pierre Bezier在1960年代法國(guó)雷諾汽車(chē)公司工作時(shí)也遇到了這個(gè)問(wèn)題。他發(fā)明了Bezier曲線(xiàn)作為高精度擬合曲線(xiàn)的一種方法。計(jì)算機(jī)驅(qū)動(dòng)的機(jī)床設(shè)備可以精確地、可靠地的制造出曲線(xiàn)。和其它偉大的發(fā)明一樣,其他的發(fā)明家也同時(shí)做出了成績(jī),但是這種擬合曲線(xiàn)的方法還是以Bezier的名字命名。
注:在第四章,B樣條曲線(xiàn),你將會(huì)學(xué)到Bezier曲線(xiàn)可以認(rèn)為是B樣條曲線(xiàn)的一個(gè)特例。本章中我將用嚴(yán)格的術(shù)語(yǔ)來(lái)解釋?zhuān)瑸榱撕竺娓ㄓ玫腂樣條曲線(xiàn)。
一些推導(dǎo)Bezier曲線(xiàn)的數(shù)學(xué)概念超出了本書(shū)的范圍,對(duì)于應(yīng)用的人來(lái)說(shuō)也不是很重要,所以我將用基本的幾何術(shù)語(yǔ)來(lái)描述這個(gè)公式。我已經(jīng)講過(guò)了直線(xiàn)的參數(shù)方程,現(xiàn)在將把這些概念擴(kuò)展到曲線(xiàn)。要畫(huà)一個(gè)線(xiàn)性曲線(xiàn),至少需要三個(gè)點(diǎn)。這三個(gè)點(diǎn)叫做控制頂點(diǎn)(Control Points),把控制頂點(diǎn)連接起來(lái)就形成了特征多邊形(Control Polygon)。圖3.2所示為由三個(gè)控制頂點(diǎn)形成的二次曲線(xiàn)。

在我講述怎樣用參數(shù)方程的方法創(chuàng)建曲線(xiàn)之前,先考慮一個(gè)很簡(jiǎn)單的幾何方法。圖3.2中的曲線(xiàn)可以用一個(gè)基本的細(xì)分方法來(lái)創(chuàng)建。對(duì)每個(gè)直線(xiàn)段,選中其中點(diǎn),并將其相連,重復(fù)直到直線(xiàn)段太短而不能再細(xì)分時(shí)就創(chuàng)建出了光滑的曲線(xiàn)。圖3.3所示為使用這種方法的幾個(gè)步驟:

若你只是畫(huà)曲線(xiàn),幾何方法完全夠用啦。在實(shí)際應(yīng)用中,你很快就會(huì)發(fā)現(xiàn)這種方法的局限性。如果其中任意一點(diǎn)改變了,你必須重復(fù)所有的細(xì)分步驟只為了計(jì)算出一個(gè)點(diǎn)。顯然地,你需要一個(gè)方法來(lái)描述曲線(xiàn)上任意一點(diǎn),這個(gè)方法就是通過(guò)控制頂點(diǎn)的方程來(lái)實(shí)現(xiàn)。這樣你只需要計(jì)算控制頂點(diǎn)的方程來(lái)求出曲線(xiàn)上的點(diǎn)而不需要再用細(xì)分方法啦。這聽(tīng)起來(lái)你像是參數(shù)方程的活!
圖3.4與圖3.2有著相同的控制頂點(diǎn),唯一的不同就是通過(guò)直線(xiàn)的參數(shù)方程來(lái)定義點(diǎn)。

現(xiàn)在連接Q1和Q2。圖3.5所示為點(diǎn)Q3的參數(shù)方程與Q1和Q2的關(guān)系。

所以對(duì)于參數(shù)t的任意值,都可以在每條線(xiàn)段上找到一個(gè)與之對(duì)應(yīng)的點(diǎn),把它們連接上,就找到連接生成的新的直線(xiàn)上的一個(gè)點(diǎn)。圖3.5中的Q3即是如此。Q3的位置是由參數(shù)t和Q1、Q2的方程確定的,即是由A、B、C和t確定。把Q1、Q2的方程代入Q3的方程可以推導(dǎo)出Q3關(guān)于控制頂點(diǎn)和參數(shù)t的方程。推導(dǎo)過(guò)程如下:

方程的最終形式將推導(dǎo)出相同的二次曲線(xiàn),如圖3.2 和3.3。也是二次Bezier曲線(xiàn)的方程。也可以將其看作一系列基函數(shù)和相應(yīng)的控制頂點(diǎn)和乘積。如下方程所示:
由基函數(shù)表示的Bezier曲線(xiàn)上的點(diǎn):
這個(gè)基函數(shù)就是伯恩斯坦基函數(shù)(Bernstein polynomials)。它確定對(duì)于任意參數(shù)值t,每個(gè)控制頂點(diǎn)對(duì)曲線(xiàn)的影響。Bezier曲線(xiàn)的控制頂點(diǎn)數(shù)也是不定的。對(duì)于控制頂點(diǎn)數(shù)量確定的伯恩斯坦基函數(shù),可由如下方程求出:

使用更多的控制頂點(diǎn)的缺點(diǎn)就是計(jì)算量會(huì)隨著控制頂點(diǎn)數(shù)的增加而增加。所以通常人們會(huì)限制控制頂點(diǎn)數(shù)為三或四。在三章剩余部分都以四個(gè)控制頂點(diǎn)為例,即三次Bezier曲線(xiàn)。其基函數(shù)可以上述方程求出,但為了簡(jiǎn)單其見(jiàn),列出如下:
三次Bezier曲線(xiàn)的四個(gè)基函數(shù):
在三章或其它章節(jié)中畫(huà)出基函數(shù)有時(shí)是很有用的。圖3.6所示為四個(gè)基函數(shù)的圖形。參數(shù)t的區(qū)間是[0,1],函數(shù)值的區(qū)間也是[0,1]。


圖3.6揭示了Bezier曲線(xiàn)的基函數(shù)的幾個(gè)特性。首先:權(quán)性。即所有基函數(shù)的和在參數(shù)t取任意值時(shí)都為1。其次,端點(diǎn)性質(zhì)。即曲線(xiàn)的端點(diǎn)通過(guò)特征多邊形的首末點(diǎn)。
圖3.6也揭示了Bezier曲線(xiàn)的一些局限性。每個(gè)控制頂點(diǎn)都會(huì)影響曲線(xiàn)上的點(diǎn),端點(diǎn)除外。這就意味著在計(jì)算曲線(xiàn)上的點(diǎn)時(shí)需要計(jì)算很多控制頂點(diǎn)。結(jié)果就是控制頂點(diǎn)的個(gè)數(shù)決定了曲線(xiàn)的次數(shù)。曲線(xiàn)的次數(shù)是控制頂點(diǎn)數(shù)減1。改變?nèi)我庖粋€(gè)控制頂點(diǎn)都會(huì)影響到曲線(xiàn)上的點(diǎn),所以這就是沒(méi)有局部控制的作用。這也是Bezier的不足之處,在你確定曲線(xiàn)最終形狀時(shí)有點(diǎn)不夠靈活。由于這個(gè)原因,人們通常會(huì)把幾個(gè)三次Bezier曲線(xiàn)拼接,而不是用很多控制頂點(diǎn)來(lái)形成曲線(xiàn)。