吳麗娟, 張心慈, 任海清, 梁岱立, 黃 堯, 齊維毅
(沈陽(yáng)師范大學(xué) 物理科學(xué)與技術(shù)學(xué)院, 沈陽(yáng) 110034)
B樣條的概念最初是由Schoenberg于20世紀(jì)40年代中提出來(lái)的[1-4],60年代末70年代初,Riesenfeld,Coons和Clark等的論著取得了最初的成果;其后10年間,各國(guó)學(xué)者如Wu,Abel和Greenberg,朱心雄和吳瑞祥等也發(fā)表了論文與著作[5-7],對(duì)B樣條方法進(jìn)行了更為廣泛的研究。
當(dāng)用B樣條曲面構(gòu)造i階(i=1,2,…,n)連續(xù)的4邊曲面或N邊曲面時(shí),要求被插值的跨界導(dǎo)矢之間必須滿足一定的約束條件,跨界導(dǎo)矢不能獨(dú)立地給出,約束條件難以滿足[8-10],而Coons曲面是由已知的邊界曲線生成的。
因此,我們將Coons曲面的構(gòu)造原理與B樣條曲線相結(jié)合,構(gòu)造了一種新的曲面,稱為Coons類(lèi)混合B樣條曲面,簡(jiǎn)稱CNSBS曲面。本文根據(jù)邊界曲線和跨界導(dǎo)矢構(gòu)造過(guò)渡的CNSBS曲面。結(jié)果顯示,該曲面與周邊B樣條曲面處處C1連續(xù)。
1) B樣條曲線方程定義為
(1)
圖1 B樣條曲線Fig.1 B-spline curve
式中:Pi是B樣條曲線的控制頂點(diǎn);Ni,p(t)是定義在節(jié)點(diǎn)空間上的p次B樣條基函數(shù)。根據(jù)控制頂點(diǎn)生成的B樣條曲線如圖1所示。
2) 由B樣條曲線的定義,可得到B樣條曲面的定義如下:
(2)
定義中Pi,j(i=0,1,…,n;j=0,1,…,m)是B樣條曲面的控制頂點(diǎn);Ni,p(u)和Nj,q(v)是B樣條基函數(shù)。構(gòu)建的B樣條曲面如圖2所示。
圖2 B樣條曲面Fig.2 B-spline surface
已知Coons曲面的4條邊界曲線分別為P(u,0),P(u,1),P(0,w)和P(1,w),曲面的4個(gè)角點(diǎn)分別為P(0,0),P(0,1),P(1,0)和P(1,1)[11]。則插值這4條邊界的Coons曲面的表達(dá)式為
Q(u,w)=Q1(u,w)+Q2(u,w)-Q3(u,w)
(3)
式中
(4)
給定控制點(diǎn),生成4片待拼接的B樣條曲面;根據(jù)邊界曲線上的型值點(diǎn),運(yùn)用反算算法求出控制點(diǎn),生成4條邊界曲線,并求出其跨界導(dǎo)矢;運(yùn)用節(jié)點(diǎn)插入算法,求出待生成曲面上的控制頂點(diǎn);根據(jù)求出的控制頂點(diǎn)和基函數(shù)生成2個(gè)B樣條曲面,并求出表達(dá)式;將2張曲面合并成1張曲面,得到拼接后的過(guò)渡CNSBS曲面。
2.2.1 構(gòu)建邊界曲線
已知型值點(diǎn)Pi(i=1,2,…,n),求出控制點(diǎn)Vj(j=1,2,…,n+1,n+2)[12]。具體過(guò)程如下:
3次均勻B樣條曲線的矩陣形式為
(5)
根據(jù)(5)式可以列出n個(gè)求解B樣條曲線控制點(diǎn)的方程組:
(6)
因?yàn)樗蟮目刂泣c(diǎn)個(gè)數(shù)為(n+2),所以要再補(bǔ)充2個(gè)端點(diǎn)條件:
首端切矢
(7)
末端切矢
(8)
求解(6)式~(8)式即可得到全部待求控制點(diǎn)Vj。
根據(jù)(1)式B樣條曲線定義可得邊界曲線:
(9)
2.2.2 求跨界導(dǎo)矢
要使過(guò)渡曲面與待拼接曲面處處C1連續(xù),關(guān)鍵是對(duì)邊界B樣條曲線的基函數(shù)求導(dǎo):
(10)
因此可以得到邊界曲線的跨界導(dǎo)矢:
(11)
2.2.3 插入節(jié)點(diǎn)
設(shè)k次B樣條曲線的控制頂點(diǎn)為P=[P0,P1,…,Pn],在節(jié)點(diǎn)區(qū)間[ui,ui+1]內(nèi)插入節(jié)點(diǎn)u。
根據(jù)節(jié)點(diǎn)插入算法:
(12)
其中k=3,r為所插入節(jié)點(diǎn)的重復(fù)度,令r=0;由此可以求出插值于邊界曲線的過(guò)渡曲面的控制頂點(diǎn)Pij和Qij[13-14]。
2.2.4 構(gòu)建B樣條曲面
(13)
(14)
式中:Bi,3(u)(Bj,3(v)),Bj,2n+1(v)Bi,2n+1(u)是B樣條基函數(shù);Pij(i=0,1,…,N,j=0,1,…,2n+1)Qij(i=0,1,…,2n+1,j=0,1,…,M)是B樣條曲面P(u,v)Q(u,v)的控制頂點(diǎn);(N+1)(或(M+1))是控制頂點(diǎn)數(shù)[15]。
2.2.5 構(gòu)造拼接曲面
將2張B樣條曲面合并成1張CNSBS曲面,由于2張曲面不能直接相加,需要求出2片曲面所占權(quán)重,并滿足約束條件:
(15)
根據(jù)Coons曲面的生成原理,得到插值于4條邊界線及其跨界導(dǎo)矢的CNSBS曲面的表達(dá)式為
(16)
式中a(u,v)=un+1(1-u)n+1,b(u,v)=vn+1(1-v)n+1,(1-u),u,(1-w)和w都是Coons曲面的線性函數(shù)。
得到的待拼接曲面和拼接后的曲面如圖3和圖4所示。
圖3 待拼接的B樣條曲面Fig.3 B-spline surfaces to be spliced
圖4 拼接后的曲面Fig.4 Surface after splicing
通過(guò)上述算法設(shè)計(jì)與實(shí)現(xiàn)過(guò)程可知,根據(jù)4條邊界曲線及其跨界導(dǎo)矢構(gòu)造過(guò)渡曲面的方法,拼接得更加精準(zhǔn),運(yùn)用C++語(yǔ)言和OpenGL函數(shù)進(jìn)行編程操作,在Visual Studio 2010平臺(tái)上進(jìn)行調(diào)試,最終生成的CNSBS曲面整體C1連續(xù)。運(yùn)用此方法拼接的曲面無(wú)需滿足跨界導(dǎo)矢之間的約束條件,并且同樣具有B樣條曲面的性質(zhì),可以實(shí)現(xiàn)曲面形狀的控制。
沈陽(yáng)師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2021年2期