朱秀云,吳曉勤,陳福來(lái)
(湖南科技大學(xué) 數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,湖南 湘潭411201)
在幾何造型中,曲線的保形插值有著非常關(guān)鍵的作用.常見(jiàn)的C1連續(xù)的三次Hermit插值及C2連續(xù)的五次Hermit插值,均不一定保形[1].目前的研究成果有GoodmanT.N.T.提出的曲率連續(xù)的分段三次保形插值法[2,3];方逵等利用三次Bézier曲線構(gòu)造了G2連續(xù)的保形分段三次插值曲線[4];康寶生構(gòu)造了C1連續(xù)的分段有理三次保凸插值[5];朱曉臨構(gòu)造了C3連續(xù)的保凸插值T-B曲線[6];我們構(gòu)造了C3連續(xù)的保形插值三角樣條曲線[7].
若給出一組有序點(diǎn)列 Si(i=0,1,…,n)及每個(gè)點(diǎn)處的相應(yīng)切矢Ti,通常可用參數(shù)三次曲線來(lái)進(jìn)行C1的Hermit插值[8],若需要更高的連續(xù)階,則要求提供更高階的導(dǎo)矢.但高次曲線不但計(jì)算復(fù)雜,且需要較多的數(shù)據(jù)存儲(chǔ),同時(shí)曲線的幾何形狀很難控制(拐點(diǎn)太多),因此,高次幾何參數(shù)曲線很難應(yīng)用于實(shí)際.三次Bézier曲線很容易構(gòu)造C2連續(xù)的插值曲線.然而,當(dāng)控制多邊形給定后,Bézier曲線的形狀也就惟一確定,若需調(diào)整Bézier曲線,則需修改Bézier曲線的控制頂點(diǎn).為了更有效地對(duì)曲線進(jìn)行調(diào)控,不少學(xué)者研究推廣了Bézier曲線.在眾多的推廣形式中,由于三角樣條基函數(shù)含有三角函數(shù),所以由它們構(gòu)造的一些曲線就很容易表示圓錐曲線和一些超越曲線.就三角多項(xiàng)式樣條曲線與通常的多項(xiàng)式樣條曲線相比,具有連續(xù)性好,逼近度高,還可精確表示圓和橢圓等特性.因此,近年來(lái),利用三角多項(xiàng)式研究保形插值成為一個(gè)熱點(diǎn).人們發(fā)現(xiàn)基于四點(diǎn)的二次三角Bézier曲線有許多優(yōu)良性質(zhì),且完全具有三次Bézier曲線的特性,所構(gòu)造的曲線能夠更好地逼近控制多邊形.因此,在外形設(shè)計(jì)中,二次三角 Bézier曲線越來(lái)越受到重視,有著較為廣泛的應(yīng)用前景.
本文利用二次三角Bézier曲線,構(gòu)造出一保形插值且C3連續(xù)的曲線,同時(shí)曲線的形狀能方便地由形狀參數(shù)作局部調(diào)整.
文獻(xiàn)[9]給出了二次三角Bézier曲線的定義.
設(shè)Si(i=0,1,2,3)為平面上的一組給定的控制頂點(diǎn),定義曲線
為二次三角Bézier曲線,其中基函數(shù)Bi(t)定義為
這里λ為參數(shù),且?1≤λ≤1.
由(2)式可導(dǎo)出曲線l( t)具有如下重要性質(zhì):
(1)端點(diǎn)性質(zhì),即
說(shuō)明曲線具有與三次Bézier曲線完全相同的端點(diǎn)性質(zhì):插值首末兩個(gè)端點(diǎn)且與端點(diǎn)相切.
(2)對(duì)稱性,凸包性,幾何不變形,變差縮減性,保凸性.
設(shè)Si(i=0,1,…,n)是一組給定的平面型值點(diǎn),用直線段連接相鄰兩點(diǎn)構(gòu)成一型值多邊形為<S0,S1,…,Sn>,記其邊向量分別為ai= Si?1Si(i=1,2,…,n).
定義1已知型值多邊形<S0,S1,…,Sn>,如果ai?1×ai與ai×ai+1反向,則稱Si是多邊形<S0,S1,…,Sn>的拐點(diǎn);否則無(wú)拐點(diǎn).
定義2如果曲線l(t)∈C3[a,b],插值點(diǎn)為Si(i=0,1,2,…,n),且滿足如下條件:
(1)型值多邊形<S0,S1,…,Sn>為凸時(shí),l(t)也為凸,且凸向一致;
(2)l(t)在型值多邊形<S0,S1,…,Sn> 的拐點(diǎn)處有一個(gè)拐點(diǎn),則稱l( t)為參數(shù)區(qū)間[a,b]上的C3保形插值曲線.
由型值多邊形的邊向量定義,插值曲線在Si處的切矢Ti定義如下
若型值多邊形<S0,S1,…,Sn>是開(kāi)的,則
若型值多邊形<S0,S1,…,Sn>是閉的,即 Sn=S0,則
其中0<ti<1 是切矢調(diào)節(jié)參數(shù).
根據(jù)切矢Ti的定義,通過(guò)調(diào)節(jié)切矢參數(shù)使Ti與Ti+1不平行,從而有以Ti為切矢過(guò)點(diǎn)Si的切線與以Ti+1為切矢過(guò)點(diǎn)Si+1的切線相交,記交點(diǎn)為
圖1 新控制多邊形的構(gòu)造
通過(guò)在每相鄰兩個(gè)插值點(diǎn)之間構(gòu)造一段二次三角 Bézier曲線,使相鄰段之間是 C3連續(xù)的和保形的,從而構(gòu)造出一條插值所有型值點(diǎn)且保形的二次三角 Bézier曲線.若曲線是閉的,僅令 Sn=S0,Sn+1=S1,Sn+2=S2即可.記圖1中過(guò)Si?1,Si的二次三角Bézier曲線段為 li(t)(i= 1,2,…,n).li(t)的四個(gè)控制頂點(diǎn)為
其中0<ωi,μi<1是可調(diào)參數(shù).
又由二次三角Bézier曲線的端點(diǎn)性質(zhì)(3),易知 li( t)與 li+1(t)在Si點(diǎn)達(dá)到位置連續(xù).
下面討論C1,C2連續(xù)條件.先討論C1連續(xù)的條件,要求
由性質(zhì)(3)有
經(jīng)計(jì)算有
將式(8)代入上式,可得
下面討論C2連續(xù)的條件.根據(jù)文獻(xiàn)[9],首先要求λ=1.
對(duì)于曲線l( t)在滿足 C0,C1連續(xù)的條件下,若曲線l( t)在各型值點(diǎn)處達(dá)到 C2連續(xù),必須有,再由性質(zhì)(3)有
即
結(jié)合式(8)、(9)有
定理 1當(dāng)參數(shù)λ=1,如果在滿足式(9)的條件下,再滿足式(10)和(11),則曲線l( t)在各型值點(diǎn)處達(dá)到C3連續(xù).
證明由曲線的端點(diǎn)性質(zhì)知,曲線l( t)在各型值點(diǎn)處達(dá)到C2連續(xù),則自動(dòng)達(dá)到C3連續(xù).
li(t)的四個(gè)控制頂點(diǎn) bij(j=0,1,2,3)構(gòu)成一個(gè)控制多邊形<bi0bi1bi2bi3>,由二次三角 Bézier曲線的保凸性知,若此控制多邊形為凸的,則 li(t)顯然也是凸曲線段,且凸性與<Si?1Vi?1Si>一致.如果型值點(diǎn)Si為拐點(diǎn),即矢量 Si?2Si?1× Si?1Si與矢量 Si?1Si×SiSi+1反向,此時(shí)第i段曲線與第i?1段曲線凸性相反,且在Si處形成一個(gè)拐點(diǎn).因而構(gòu)造的分段二次三角 Bézier曲線拐點(diǎn)與給定型值多邊形的拐點(diǎn)個(gè)數(shù)相同,從而該曲線對(duì)其給定的型值多邊形是保形的.綜上知,插值曲線l( t)是 C3連續(xù)和保形的,同時(shí)曲線形狀的局部調(diào)整很方便,如通過(guò)改變 ti,ωi,μi的值便可調(diào)整第i段曲線 li(t)的形狀,而且曲線段 li(t)的調(diào)整最多僅影響其相鄰兩段曲線,卻與別的曲線無(wú)關(guān).
特別地,若 Si?1,Si,Si+1三點(diǎn)共線,則可定義 Ti?1= Ti= Ti+1=ai,此時(shí)Si?1Si+1為一直線段,構(gòu)造的曲線依然是保形的,如圖2中的線段S0S4.
給定平面上的一組有序點(diǎn)列 Si(i=0,1,…,n),構(gòu)造保形插值二次三角Bézier曲線l( t)的算法如下:
Step1根據(jù)定義1確定型值多邊形的拐點(diǎn);
Step2由(4)、(5)、(6)三式確定插值曲線在各型值點(diǎn)處的切矢;
Step3由(7)式計(jì)算相鄰兩型值點(diǎn)切線的的交點(diǎn) Vi(i=0,1,…,n?1);
Step4在區(qū)間(0,1)內(nèi)選定μi,由式(11)選定ωi,再由式(10)確定μi+1,式(9)確定ωi+1,最后結(jié)合式(8)確定bij( i=1,2,…,n,j=0,1,2,3);
Step5以bij(j=0 ,1,2,3)為控制多邊形頂點(diǎn),按(1)式計(jì)算第i段曲線 li(t)上的點(diǎn);
Step6調(diào)節(jié)參數(shù)ti(i=0 ,1,2,…,n),轉(zhuǎn)2、4步,可修改曲線的形狀.
該算法構(gòu)造的曲線是C3連續(xù)的,該曲線既解決了二次三角Bézier曲線的構(gòu)造問(wèn)題,又是一種保形插值的有效方法.通過(guò)該算法,由型值點(diǎn)直接計(jì)算所有控制點(diǎn),而無(wú)需求解線性或非線性方程組,且曲線的構(gòu)造有很好的局部性.
例1用本文方法對(duì)Akima數(shù)據(jù)點(diǎn)作保形插值,如圖2所示.圖2中圓點(diǎn)為Akima數(shù)據(jù)點(diǎn),插值曲線分為兩部分,一部分為直線段,另一部分是曲線.
圖2 插值A(chǔ)kima數(shù)據(jù)點(diǎn)的二次三角Bézier曲線
圖3 插值封閉圓上數(shù)據(jù)點(diǎn)的二次三角Bézier曲線
例2給定一整圓上的數(shù)據(jù)點(diǎn)列S0(10,0),S1(4,2),S2(2,16),S3(10,20),S4(16,18),S5(20,10),S6(16,2),S7(10,0),對(duì)該點(diǎn)列進(jìn)行C3連續(xù)的分段二次三角 Bézier保形插值.如圖 3所示,其中實(shí)線是得到的插值曲線,虛線是一個(gè)整圓.
[1] W.Boehm,etal.A Survey of Curve and Surface methods in CAGD[J].Computer Aided Geometric Design,1984,39(1):1~60
[2] Goodman T.N.T.,Unsworth k.Shape preserving interpolation by parametrically defined Curves[J].SLAM J.Numerical Anal ,1988,25(6):1~13
[3] Goodman T.N.T.,Unsworth k.Shape preserving interpolation by curvature continuous parametrically defined curves[J].Computer Aided Geometric Design,1988,15:323~340
[4] 方 逵,文 錦.(G2-連續(xù)的)保形分段三次插值曲線[J].工程數(shù)學(xué)學(xué)報(bào),1999,16(3):6~16
[5] 康寶生.分段有理三次保凸插值[J].高等計(jì)算數(shù)學(xué)學(xué)報(bào),1995,17(2):138~144
[6] 朱曉臨,葛傳豐.C3連續(xù)的保凸T-B插值曲線及保形插值算法[J].工程圖學(xué)學(xué)報(bào),2009,(6):76~80
[7] 吳曉勤.C3連續(xù)的保形插值三角樣條曲線[J].數(shù)學(xué)理論與應(yīng)用,2002,22(1):60~64
[8] Farin G.Curves and Surfaces for Computer Aided Geometric Design:A Practical Guide [M].Academic Press,1988
[9] 吳曉勤.帶形狀參數(shù)的二次三角Bézier曲線[J].工程圖學(xué)學(xué)報(bào),2008,(1):82~87