国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

NURBS曲線矩陣表示及其在插補(bǔ)中的應(yīng)用①

2015-04-01 03:24:22徐水龍徐周波古天龍
關(guān)鍵詞:樣條曲面導(dǎo)數(shù)

徐水龍,徐周波,古天龍

(1.桂林電子科技大學(xué) 機(jī)電工程學(xué)院,廣西 桂林 541004;2.桂林電子科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣西 桂林 541004)

隨著計(jì)算機(jī)輔助圖形設(shè)計(jì)理論的發(fā)展,非均勻有理B樣 條(non-uniform rational B-spline,簡(jiǎn) 稱NURBS)技術(shù)以其獨(dú)特的優(yōu)點(diǎn),從眾多形狀描述曲線曲面中脫穎而出,成為定義工業(yè)產(chǎn)品幾何形狀的唯一數(shù)學(xué)方法,并被廣泛應(yīng)用于CAD/CAM中[1]。但由于控制算法的不足及CPU處理能力的限制,NURBS技術(shù)在CAM中的應(yīng)用不盡人意,其中NURBS曲線曲面的表示問(wèn)題顯得尤為突出。

在NURBS曲線曲面插補(bǔ)中,為完成一維參數(shù)空間到三維坐標(biāo)空間的映射,需計(jì)算大量插補(bǔ)點(diǎn)的坐標(biāo);同時(shí)為了控制刀具的速度,需對(duì)曲線上各點(diǎn)的曲率進(jìn)行計(jì)算。傳統(tǒng)的Deboor算法[2]在求解NURBS曲線上點(diǎn)的坐標(biāo)和導(dǎo)數(shù)的遞推過(guò)程中存在大量的重復(fù)計(jì)算,從而增加了許多額外的時(shí)間開(kāi)銷(xiāo)。近年來(lái),矩陣?yán)碚摰陌l(fā)展和計(jì)算機(jī)對(duì)矩陣運(yùn)算處理水平的提高,使得NURBS的矩陣表示算法越來(lái)越受到國(guó)內(nèi)外學(xué)者的重視。Choi等[3]和王學(xué)福等[4]均提出了用于計(jì)算NURBS曲線的符號(hào)矩陣表示算法,但都未給出任意階NURBS曲線顯式矩陣表達(dá)式的遞推過(guò)程。Grabowski等[5]給出了B樣條基的系數(shù)矩陣元素間的遞推公式,但并沒(méi)有給出系數(shù)矩陣的矩陣遞推公式。秦開(kāi)懷[6]采用Toeplitz矩陣,導(dǎo)出了任意階NURBS曲線的顯式矩陣遞推公式,但該公式中所含的矩陣相乘運(yùn)算將增加乘法的計(jì)算量,且算法不易于用代碼實(shí)現(xiàn)。潘日晶等[7]引入差商的概念,提出了NURBS曲線的顯式矩陣表示算法,但該算法的推導(dǎo)過(guò)程較為繁瑣,時(shí)間復(fù)雜性隨NURBS曲線階數(shù)的增加而大大增加,不利于保證直接插補(bǔ)的實(shí)時(shí)性。王國(guó)勛等[8]通過(guò)對(duì)B樣條的導(dǎo)數(shù)公式進(jìn)行逐階積分,給出了系數(shù)矩陣的元素遞推關(guān)系,但該遞推關(guān)系分類復(fù)雜,同樣不利于用代碼實(shí)現(xiàn)。

鑒于此,基于文獻(xiàn)[5]提出一種新型的系數(shù)矩陣遞推公式。該算法具有計(jì)算量小、計(jì)算穩(wěn)定、易于用代碼實(shí)現(xiàn)等優(yōu)點(diǎn),可用于任意階NURBS曲線和B樣條曲線的矩陣表示及其升階、降階。在NURBS曲線直接插補(bǔ)可通過(guò)該算法進(jìn)行預(yù)處理,求出曲線的系數(shù)矩陣并存儲(chǔ),便于后續(xù)軌跡規(guī)劃和速度控制時(shí)直接調(diào)用該系數(shù)矩陣進(jìn)行曲線求值求導(dǎo),從而保證了插補(bǔ)的實(shí)時(shí)性。

1 NURBS曲線的矩陣表示形式

1.1 B樣條曲線的表示式

k次B樣條曲線的表示式為:

其中:u∈[0,1];di=(xi,yi,zi),i=0,1,…,n為曲線的控制頂點(diǎn);Ni,k(u)為由節(jié)點(diǎn)矢量U根據(jù)Deboor-Cox遞推公式(式(2))決定的k次規(guī)范B樣條基函數(shù),簡(jiǎn)稱B樣條基。節(jié)點(diǎn)矢量U=[u0,u1,…,un+k+1],0≤ui≤1且ui≤ui+1是經(jīng)過(guò)規(guī)范化處理[7]的節(jié)點(diǎn)矢量。

根據(jù)B樣條基的局部支承性,即當(dāng)u∈[ui,ui+1)時(shí),有

于是可通過(guò)判斷參數(shù)u所處區(qū)間,對(duì)曲線進(jìn)行分段處理。故式(1)可寫(xiě)成如下分段形式:

其中,由于任意l次B樣條基u∈[ui,ui+1)可展開(kāi)成如下冪級(jí)數(shù)形式:

其中:(i)(與參數(shù)u無(wú)關(guān),但與i有關(guān))為l次B樣條基Ni-h(huán),l中uj項(xiàng)的系數(shù);l=1,2,…,k;h=l,l-1,…,0;j=0,1,…l。

則式(3)可寫(xiě)成

其中,(k+1)×(k+1)階矩陣Mk(i)稱為k次B樣條基的系數(shù)矩陣。

1.2 NURBS曲線的表示式

由于專門(mén)用于自由型曲線曲面設(shè)計(jì)的B樣條方法無(wú)法滿足構(gòu)造初等曲線曲面的要求,于是學(xué)者們對(duì)B樣條方法進(jìn)行改進(jìn),提出了非均勻有理B樣條(NURBS)方法。k次NURBS曲線C(u)的表達(dá)式

其中u∈[0,1],wi(i=0,1,…,n)稱為權(quán)因子,其他各量的含義與式(1)相同。由式(6)可知,當(dāng)wi=1時(shí),NURBS曲線便成為一條B樣條曲線?;谑剑?)的推導(dǎo)過(guò)程,式(6)可寫(xiě)成如下矩陣形式:

其 中:Q(i)=(wi-kdi-k,wi-k+1di-k+1,…,widi)T;W(i)=(wi-k,wi-k+1,…,wi)T;u∈[ui,ui+1)。

2 系數(shù)矩陣的遞推算法

由式(7)可見(jiàn),k次NURBS曲線的矩陣表示的關(guān)鍵是求其系數(shù)矩陣Mk(i)。文獻(xiàn)[5]基于式(2)給出了系數(shù)矩陣元素的遞推關(guān)系式,從關(guān)系式中可看出,每個(gè)高階元素由4項(xiàng)低階元素的加權(quán)項(xiàng)相加而得。但在遞推過(guò)程中,這些加權(quán)項(xiàng)的權(quán)系數(shù)存在重復(fù)計(jì)算,且在計(jì)算系數(shù)矩陣中位于矩陣邊緣的元素時(shí),需要判斷這4個(gè)加權(quán)項(xiàng)中是否含有為0的項(xiàng)。為彌補(bǔ)上述不足,通過(guò)對(duì)該遞推關(guān)系式中的權(quán)系數(shù)進(jìn)行變量代換,進(jìn)一步對(duì)得到的關(guān)系式進(jìn)行形式變換,找出某一低階系數(shù)矩陣元素對(duì)哪些高階系數(shù)矩陣元素中的哪些項(xiàng)有影響,提取受影響的項(xiàng)并組合疊加,最終推導(dǎo)出系數(shù)矩陣顯式遞推公式。

2.1 系數(shù)矩陣顯式遞推過(guò)程的推導(dǎo)

當(dāng)u∈[ui,ui+1)時(shí),令 式(4)中=ui-h(huán)+l-為變量代換后的權(quán)系數(shù)。由此可得:=1-;則根據(jù)式(2)有:

結(jié)合式(4)、(8)并展開(kāi)可得

其中:l=1,2,…,k;h=l,l-1,…,0;j=0,1,…,l。

將式(9)兩邊進(jìn)行多項(xiàng)式展開(kāi),由等式兩邊含uj項(xiàng)的系數(shù)對(duì)應(yīng)相等,可得遞推關(guān)系:

其中

1)u∈[ui,ui+1),=1;

2)當(dāng)j=0時(shí),

3)當(dāng)j=l時(shí),

4)當(dāng)h=0時(shí),

5)當(dāng)h=l時(shí)

為進(jìn)一步得出系數(shù)矩陣的直接顯式遞推公式,對(duì)式(10)作如下形式變換:

式(11)~(14)中,p、q=0,1,…,l-1;l=1,2,…,k。

從上可看出,l-1次B樣條基系數(shù)矩陣中的元素,僅對(duì)l次B樣條基系數(shù)矩陣中的、產(chǎn)生影響,于是可提取式(11)~(14)中包含的項(xiàng)。最后將系數(shù)矩陣Ml-1(i)中的各個(gè)元素對(duì)系數(shù)矩陣Ml(i)中元素的影響進(jìn)行組合疊加,可得u∈[ui,ui+1)時(shí)Ml(i)的顯式遞推公式:

其中:

1)右邊的矩陣中其余元素均為0;

2)=1;

6)p、q=0,1,…,l-1;l=1,2,…,k。

從式(15)可看出,等式右邊由l2個(gè)l+1階方陣相加,因而存在大量的加法運(yùn)算,尤其是零加零的運(yùn)算。為省去這些零加零運(yùn)算,降低算法的時(shí)間復(fù)雜度,可作如下優(yōu)化:先計(jì)算并存儲(chǔ)對(duì)Ml(i)中各個(gè)元素的影響,再將對(duì)Ml(i)中各個(gè)元素的影響累加到先前存儲(chǔ)的元素中,依此類推,便可遞推出系數(shù)矩陣Ml(i)。

2.2 遞推算法的代碼實(shí)現(xiàn)

為實(shí)現(xiàn)上述算法,首先需要定義并初始化曲線的相關(guān)參數(shù)(曲線次數(shù)k、控制點(diǎn)個(gè)數(shù)n+1、節(jié)點(diǎn)矢量U[n+k+2])。將上述系數(shù)矩陣遞推算法寫(xiě)成預(yù)處理函數(shù),其C程序如下:

double M[k+1][k+1][k+1][n-2]=0;

//定義系數(shù)矩陣并初始化為0

void pretreat()

int p,q,L,i;

for(i=0;i<=n-k;i++)

{//對(duì)曲線分段處理

M[0][0][0][i]=1;

//M[p][q][L][i]即為文中的(i)

for(L=1;L<=k;L++)

{for(q=0;q<=L-1;q++)

{double beta,C,D;

beta=U[i+k+q+1]-U[i+k+q-L+1];

//由于u0~uk均為0,故第i段曲線對(duì)應(yīng)于

//u∈[ui+k,ui+k+1)

if(beta==0)

{C=0; D=0;}

else

{D=-1/beta; C=U[i+k+q+1]/beta;}

for(p=0;p<=L-1;p++)

{double var1,var2;

//定義2個(gè)中間變量,以減少重復(fù)計(jì)算

var1=C*M[p][q][L-1][i];

var2=D*M[p][q][L-1][i];

//將式(15)中的各項(xiàng)用累加的方法表示,

//以省去零加零運(yùn)算

M[p][q][L][i]=M[p][q][L][i]+var1;

M[p][q+1][L][i]=M[p][q+1][L][i]

+M[p][q][L-1][i]-var1;

M[p+1][q][L][i]=M[p+1][q][L][i]

+var2;

M[p+1][q+1][L][i]=M[p+1][q+1]

[L][i]-var2;

由上可看出本算法的代碼實(shí)現(xiàn)簡(jiǎn)單,過(guò)程清晰。而文獻(xiàn)[6]的算法涉及矩陣的相關(guān)運(yùn)算(如矩陣擴(kuò)行、雙對(duì)角矩陣的構(gòu)造、矩陣相乘等),故代碼實(shí)現(xiàn)將降低算法的執(zhí)行效率。利用文獻(xiàn)[8]的算法求系數(shù)矩陣中的元素,其遞推公式分為5類,且遞推公式需要調(diào)用同階系數(shù)矩陣的元素,不利于編程實(shí)現(xiàn)和提高算法效率。綜上所述,從代碼實(shí)現(xiàn)角度分析,本算法具有明顯優(yōu)勢(shì)。

3 算法效率的比較

設(shè)Tadd、Tsub、Tmul、Tdiv分別代表所需要的加、減、乘、除的運(yùn)算次數(shù),并假定它們滿足如下關(guān)系:Tadd≈Tsub,Tmul≈Tdiv,Tmul≈1.12Tadd

[6]。將系數(shù)矩陣遞推算法效率與相關(guān)文獻(xiàn)的算法效率進(jìn)行比較,其各系數(shù)矩陣遞推算法時(shí)間復(fù)雜度見(jiàn)表1所示。

k次B樣條基與文獻(xiàn)[6]中的k+1階B樣條基對(duì)應(yīng)。從表1可看出,本算法的時(shí)間復(fù)雜度優(yōu)于另外幾種算法。

為驗(yàn)證本算法的高效性,將Deboor算法[2]、遞推矩陣算法[6]與本算法均用C語(yǔ)言代碼實(shí)現(xiàn),然后在主頻為2.99GHz的計(jì)算機(jī)運(yùn)行比較。以計(jì)算5000次NURBS曲線上的點(diǎn)所需時(shí)間為基準(zhǔn),得出3種算法的平均時(shí)間開(kāi)銷(xiāo)分別為3.160 222、1.224 315、0.917 387ms。由此可見(jiàn),本算法在效率上具有一定的優(yōu)勢(shì),能為NURBS曲線的高速高精度插補(bǔ)提供有力保證。

表1 各系數(shù)矩陣遞推算法時(shí)間復(fù)雜度Tab.1 Time complexity of different coefficient matrix recursion algorithms

4 NURBS矩陣表示在直接插補(bǔ)中的應(yīng)用

近年來(lái),隨著NURBS曲線曲面被廣泛應(yīng)用于產(chǎn)品設(shè)計(jì)中,NURBS曲線的直接插補(bǔ)技術(shù)也越來(lái)越受到國(guó)內(nèi)外學(xué)者的重視。2007年,王田苗等[9]將Deboor算法用于NURBS曲線的直接插補(bǔ)中,但由于Deboor算法在求值求導(dǎo)過(guò)程中存在大量重復(fù)遞推計(jì)算,與NURBS矩陣表示算法相比,不能通過(guò)預(yù)處理減小插補(bǔ)周期內(nèi)的計(jì)算量,難以保證插補(bǔ)的實(shí)時(shí)性。

4.1 NURBS曲線上點(diǎn)的計(jì)算

在NURBS曲線的直接插補(bǔ)中需要完成一維參數(shù)空間到三維坐標(biāo)空間的映射,計(jì)算大量插補(bǔ)點(diǎn)的坐標(biāo),以得到下一個(gè)插補(bǔ)周期中刀具的進(jìn)給增量??上日{(diào)用上面的算法進(jìn)行預(yù)處理,求得k次B樣條基的系數(shù)矩陣Mk(i),進(jìn)而得到不同分段區(qū)間內(nèi)NURBS曲線的矩陣表示式。對(duì)給定參數(shù)u,要計(jì)算其在三維坐標(biāo)空間的映射點(diǎn),只需判斷u所處的分段區(qū)間并調(diào)用相應(yīng)的系數(shù)矩陣,再將u的值代入式(7)即可求得NURBS曲線的坐標(biāo)(Cx,Cy,Cz)。

4.2 NURBS曲線上各點(diǎn)處的導(dǎo)數(shù)及曲率計(jì)算

在NURBS曲線的直接插補(bǔ)中,為滿足一定的加工精度和機(jī)床動(dòng)力性能,常常需要根據(jù)曲線的曲率對(duì)刀具的速度、加速度等狀態(tài)進(jìn)行實(shí)時(shí)控制,這就需要計(jì)算曲線在某點(diǎn)處的導(dǎo)數(shù)。首先通過(guò)對(duì)式(7)進(jìn)行變換[8]可得到:)

其中,Mk(u)、Q(u)、W(u)與參數(shù)u無(wú)關(guān),簡(jiǎn)寫(xiě)為Mk、Q、W。再對(duì)式(16)兩邊求r階導(dǎo)數(shù):

由式(17)可遞推出曲線C(u)在某點(diǎn)處的r階導(dǎo)數(shù)C(r)(u)。一般在NURBS曲線插補(bǔ)中只涉及曲線的一階和二階導(dǎo)數(shù),其計(jì)算公式為:

在插補(bǔ)過(guò)程中,由于進(jìn)給步長(zhǎng)很小,可用圓弧近似各步長(zhǎng)間的曲線,將該圓弧半徑作為對(duì)應(yīng)插補(bǔ)點(diǎn)的曲率半徑。利用式(18)、(19)可計(jì)算曲率半徑ρ,

此外,實(shí)時(shí)插補(bǔ)過(guò)程中還要不斷通過(guò)計(jì)算進(jìn)給步長(zhǎng)確定下一時(shí)刻插補(bǔ)點(diǎn)的位置,通常采用的方法是一階或二階泰勒展開(kāi)公式。式(20)同樣需要反復(fù)采用曲線在插補(bǔ)點(diǎn)處的導(dǎo)數(shù)信息,可見(jiàn),NURBS曲線求值求導(dǎo)算法的效率對(duì)保證其插補(bǔ)實(shí)時(shí)性具有非常重要的作用。

5 結(jié)束語(yǔ)

基于文獻(xiàn)[5]的思想,將Deboor-Cox遞推公式中的B樣條基用冪函數(shù)表示,利用公式兩邊次數(shù)相同項(xiàng)的系數(shù)相等的關(guān)系,得出系數(shù)矩陣元素之間的遞推關(guān)系。本研究對(duì)該關(guān)系式進(jìn)行變量代換,避免了中間量的重復(fù)計(jì)算。再通過(guò)對(duì)該關(guān)系式進(jìn)行形式變換、元素提取、組合疊加,最終得出系數(shù)矩陣的顯式遞推矩陣公式,進(jìn)一步減小了計(jì)算量。與傳統(tǒng)的Deboor算法相比,本算法采用矩陣表示NURBS曲線,便于對(duì)曲線進(jìn)行預(yù)處理,避免了重復(fù)遞推,更有利于保證插補(bǔ)的實(shí)時(shí)性。與其他矩陣遞推算法相比,本算法的時(shí)間復(fù)雜度更優(yōu),且易于用代碼實(shí)現(xiàn)。本算法不僅可用于任意階NURBS曲線和B樣條曲線的矩陣表示及其升階、降階,同時(shí),還可為進(jìn)一步研究NURBS曲面表示和直接插補(bǔ)奠定基礎(chǔ)。

[1]施法中.計(jì)算機(jī)輔助幾何設(shè)計(jì)與非均勻有理B樣條[M].北京:高等教育出版社,2001:211-310.

[2]Deboor C.A practical guide to splines[M].New York:Springer-Verlag,1978:115-117.

[3]Choi B K,Yoo W S,Lee C S.Matrix representation for NURBS curves and surfaces[J].Computer Aided Design,1990,22(4):235-240.

[4]王學(xué)福,孫家廣,秦開(kāi)懷.NURBS的符號(hào)矩陣表示及其應(yīng)用[J].計(jì)算機(jī)學(xué)報(bào),1993,16(1):28-34.

[5]Grabowski H,Li X.Coefficient formula and matrix of nonuniform B-spline functions[J].Computer Aided Design,1992,24(12):637-642.

[6]秦開(kāi)懷.NURBS曲線和曲面的遞推矩陣及其應(yīng)用[J].計(jì)算機(jī)學(xué)報(bào),1996,19(12):941-947.

[7]潘日晶.NURBS曲線曲面的顯式矩陣表示及其算法[J].計(jì)算機(jī)學(xué)報(bào),2001,24(4):358-366.

[8]王國(guó)勛,舒啟林,王軍,等.NURBS直接插補(bǔ)技術(shù)中快速求值求導(dǎo)算法[J].東北大學(xué)學(xué)報(bào):自然科學(xué)版,2012,33(7):1021-1024.

[9]王田苗,曹宇男,陳友東,等.基 于de Boor算 法 的NURBS曲線插補(bǔ)和自適應(yīng)速度控制研究[J].中國(guó)機(jī)械工程,2007,18(21):2608-2613.

猜你喜歡
樣條曲面導(dǎo)數(shù)
一元五次B樣條擬插值研究
解導(dǎo)數(shù)題的幾種構(gòu)造妙招
相交移動(dòng)超曲面的亞純映射的唯一性
圓環(huán)上的覆蓋曲面不等式及其應(yīng)用
三次參數(shù)樣條在機(jī)床高速高精加工中的應(yīng)用
三次樣條和二次刪除相輔助的WASD神經(jīng)網(wǎng)絡(luò)與日本人口預(yù)測(cè)
軟件(2017年6期)2017-09-23 20:56:27
基于樣條函數(shù)的高精度電子秤設(shè)計(jì)
關(guān)于導(dǎo)數(shù)解法
基于曲面展開(kāi)的自由曲面網(wǎng)格劃分
導(dǎo)數(shù)在圓錐曲線中的應(yīng)用
卢龙县| 德钦县| 鄂伦春自治旗| 成武县| 新安县| 珲春市| 高邑县| 平舆县| 通榆县| 天等县| 水城县| 正蓝旗| 仙游县| 邵武市| 溆浦县| 堆龙德庆县| 峡江县| 肥西县| 菏泽市| 武夷山市| 郑州市| 阳西县| 永兴县| 虹口区| 秀山| 冷水江市| 讷河市| 汉中市| 通河县| 丹巴县| 五常市| 广汉市| 长宁区| 宣威市| 白朗县| 舟山市| 竹山县| 潼南县| 钦州市| 盐津县| 噶尔县|