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

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

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

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

所以對于參數(shù)t的任意值,都可以在每條線段上找到一個(gè)與之對應(yīng)的點(diǎ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)過程如下:

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

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


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