李紅林
""【摘 要】本文利用VC++編程環境,生成兩段三次Bezier曲線,并對曲線進行連續性條件討論,且實現了曲線拼接。
【關鍵詞】三次;Bezier;連續性;曲線拼接
【Abstract】In this paper, the VC++ programming environment is used to generate three Bezier curves, and the continuity conditions are discussed, and the curves are achieved
【Key words】Cubic; Bezier; Continuity; Curve Splicing
Bezier曲線是由法國人Bezier于20世紀70年代初為解決汽車外型設計而提出的一種新的參數表示方法[1]。Bezier 方法是曲線、曲面造型中的一個里程碑,它以逼近原理為基礎,應用Bezier方法,可逼近數學曲線、曲面或設計師勾畫的草圖,起到輔助設計的作用[2-3]。由于實際應用中的線和面形狀復雜,用單一曲線、曲面無法表示,所以有必要對曲線、曲面進行拼接。
1 定義
1.1 Bezier曲線的定義
2 三次Bezier曲線的生成
在VC++6.0 環境下,新建一個基于MFC的單文檔工程。在工程View.cpp中添加Bezier曲線生成函數,當n=3時,生成任意兩條三次Bezier曲線,如圖1所示。
3 三次Bezier曲線的拼接及連續性
樣條曲線是由各個多項式曲線段連接而成,為了保證各個曲線段在連接點處是光滑的,需要滿足各種連續性條件[5]。連續性有參數連續性和幾何連續性。若兩條相鄰參數曲線段在連接點處具有n階連續導矢,即n階連續可微,則將這類連續性稱為n階參數連續性條件,記為Cn。若只要求兩條相鄰參數曲線段在連接點處的n階導矢成比例,而不要求必須相等,則將這類連續性稱為n階幾何連續性,記為Gn。因參數連續性條件比幾何連續性條件更加苛刻一些。所以,在三次Bezier曲線拼接時以幾何連續性為例。
設兩條三次Bezier 曲線的控制點列分別為Pi(i=0,1,2,3)和Qj(j =0,1,2,3)。若將P(t)段與Q(t)相連,則在連接點處達到G0、 G1、G2連續的充要條件是:
(1)G0連續:P(1)=Q(0)。即P(t)的終點與Q(t)的起點重合,如圖2 所示,曲線在連接點處不能保證是光滑連接。
(2)G1連續:是兩段相鄰曲線在連接點處不僅達到G0連續,同時一階導數成比例,即P(1)=αQ(0),其中α是比例系數。具有G1連續,在連接點處有公共的切矢方向,即P2,P3(Q0),Q1三點共線,如圖3所示。
(3)G2連續:指兩段相鄰曲線段的一階導數、二階導數在交點處均成比例。P(1)=αQ(0),P(1)=βQ(0)。G2連續除了滿足G1 條件外,還滿足:副法矢方向相同、曲率相等。
4 結論
本文首先對三次Bezier曲線進行了簡單分析與實現;其次對曲線的連續性進行分析;最后對生成的三次Bezier曲線進行拼接。該拼接方法可實現任意次的Bezier曲線的拼接。
【參考文獻】
[1]杜曉增,丁宇辰.計算機圖形學基礎[M].2版.北京:機械工業出版社,2013:103.
[2]嚴蘭蘭,宋來忠,李軍成.有理Bezier 曲線的拼接[J].三峽大學學報:自然科學版,2005,27(5):469-471.
[3]楊林英.Bezier曲線的拼接及擴展[D].蘭州:西北師范大學,2013.
[4]蘆殿軍.Bezier 曲線的拼接及其連續性[J].青海大學學報:自然科學版,2004,22(6):84-86.
[5]銀紅霞,杜四春,蔡立軍.計算機圖形學[M].北京:水利水電出版社,2005:133-134.
[責任編輯:楊玉潔]