周廣利,陳帥,王超,劉洋
哈爾濱工程大學(xué) 船舶工程學(xué)院,黑龍江 哈爾濱 150001
船體幾何重構(gòu)是實(shí)現(xiàn)船舶概念設(shè)計(jì)、總體設(shè)計(jì)和船型優(yōu)化的一種關(guān)鍵技術(shù)[1],對船舶的各種性能起著決定性影響。針對船體幾何重構(gòu),找到一種簡潔、高效的NURBS技術(shù)求解方法具有一定的現(xiàn)實(shí)意義。本文就這一問題對船體型線、曲面的重構(gòu)和分割進(jìn)行分析。
現(xiàn)階段對船體曲面設(shè)計(jì)的研究相對成熟,錢宏等[2]將NURBS技術(shù)成功運(yùn)用于船體曲面重構(gòu),Wang H等[3]利用NURBS曲面對船體進(jìn)行幾何建模,討論了節(jié)點(diǎn)矢量的相容性處理問題,于亞如[4]將NURBS技術(shù)運(yùn)用到船體型線設(shè)計(jì)中,利用其卓越的局部修改性來設(shè)計(jì)船體型線,張偉等[5]提出一種基于B樣條的船體及自由面面元生成方法,這些研究主要是基于NURBS的船體曲面生成過程精確表達(dá)和曲面的修改方法等。
基于NURBS的船體曲面設(shè)計(jì),有單一NURBS曲面表達(dá)方法[6]、曲面分片表達(dá)方法和曲面細(xì)分方法[7]等,它們主要是根據(jù)型值點(diǎn)生成船體曲面特征線進(jìn)而生成船體曲面。陳軍等[8]對NURBS曲線曲面反求問題進(jìn)行分析和研究,實(shí)現(xiàn)了船體的三維實(shí)體造型。Shi G等[9]實(shí)現(xiàn)了快速插值給定型值點(diǎn)的船體曲面重構(gòu)技術(shù)。Gianpaolo S等[10]將一種在NURBS曲面上計(jì)算曲率和臍點(diǎn)的技術(shù)應(yīng)用于船型設(shè)計(jì)。Yang C等[11]采用NURBS曲面表示的船體,該技術(shù)可用于自動(dòng)生成球艏,或根據(jù)水動(dòng)力性能和幾何約束修改船首或整個(gè)船型,也可以根據(jù)可移動(dòng)的RBF控制節(jié)點(diǎn)來獲得NURBS控制點(diǎn)的運(yùn)動(dòng)。
在基于NURBS方法關(guān)鍵技術(shù)的船體幾何重構(gòu)應(yīng)用上,以上研究對控制頂點(diǎn)的反求算法較為復(fù)雜,對于曲線曲面的邊界條件處理也各不相同。本文通過利用一種非節(jié)點(diǎn)邊界條件下的曲線控制頂點(diǎn)反算算法[12],編寫了船體型線和船體曲面重構(gòu)程序,并探索一種求解算法用于船體曲面與水面快速求交。該程序可以通過修改控制頂點(diǎn)和權(quán)重因子對曲面進(jìn)行變形,這種修改不破壞原有曲面的光順、連續(xù)等幾何特性,更方便用于船體型線設(shè)計(jì)領(lǐng)域。
由參數(shù)變量u定義的k次NURBS曲線方程[13]為
式中:p(u)為 參數(shù)u∈[0,1]下 曲線上的點(diǎn);bi為曲線控制頂點(diǎn),wi為 控制頂點(diǎn)對應(yīng)的權(quán)重因子;Ni,k(u)為k次NURBS曲線的基函數(shù),可根據(jù)deBoor-Cox的遞推公式[13]得出:
k次NURBS曲線的節(jié)點(diǎn)矢量,U=[u0,u1,···,un+k+1]。 曲線的定義域u∈[uk,un+1],共含有n-k+1個(gè)節(jié)點(diǎn)區(qū)間。去掉基函數(shù)為零的那些項(xiàng),式(1)可化簡為
當(dāng)k=3時(shí),NURBS曲線的節(jié)點(diǎn)矢量和定義域分別為
本文運(yùn)用的三次NURBS曲線插值求解方程簡化為
由2個(gè)參數(shù)變量(u,v)定義的NURBS曲面方程[13]:
式中:p(u,v)為 參數(shù) (u,v)下 曲面上的點(diǎn);bi,j為 (m+1)×(n+1)的 曲面控制網(wǎng)格;wi,j為控制網(wǎng)格對應(yīng)的權(quán)因子;Ni,3(u)、Nj,3(v)為曲面u和v兩個(gè)參數(shù)方向的基函數(shù),根據(jù)式(2)推導(dǎo)。曲面的控制網(wǎng)格可以根據(jù)曲線控制頂點(diǎn)的反算思路[12]求解,給定(m+1)×(n+1)個(gè)數(shù)據(jù)點(diǎn)pi,j,p0,i、pn,i、pj,0和pj,m,i=0,1,···,m,j=1,2,···,n?1作為曲面的邊界。與NURBS曲線邊界補(bǔ)充方 式 類 似,p1,i、pn?1,i、pj,1和pj,m,i=1,2,···,m?1,j=2,3,···,n?2不再作為曲面分段連接點(diǎn),由積累弦長參數(shù)化法可得出兩個(gè)方向的節(jié)點(diǎn)矢量:
為了使其曲面控制網(wǎng)格求解更方便,NURBS曲面方程可改寫為
令
則式(7)可簡化為
將兩個(gè)方向的節(jié)點(diǎn)值代入式(7),根據(jù)反算NURBS插值曲線控制頂點(diǎn)的方法分為兩步求出,思路如下:1)在u方向上應(yīng)用NURBS曲線反算,可解出式(9)中的ai(v)。2)在v方向上應(yīng)用NURBS曲線反算,可解出式(8)中的bi,j控制網(wǎng)格。
在實(shí)際應(yīng)用中,給定樣條曲線一系列數(shù)據(jù)點(diǎn),對樣條曲線進(jìn)行插值的情況更為多見,也就是所謂的逆向工程。逆向工程就是根據(jù)一系列數(shù)據(jù)點(diǎn)可反算出樣條曲線的多邊形控制頂點(diǎn),進(jìn)而根據(jù)控制頂點(diǎn)和基函數(shù)對樣條曲線進(jìn)行插值。一般情況下,給出n-1個(gè)數(shù)據(jù)點(diǎn)和曲線端部的2個(gè)切矢量,可建立n+1個(gè)方程進(jìn)而求解對應(yīng)的n+1個(gè)控制頂點(diǎn)。通常在對船型進(jìn)行建模時(shí),給定的條件是船舶型值點(diǎn)或者型線圖,沒有端部切矢量。本文運(yùn)用王飛[12]提出的一種反算三次B樣條插值開曲線控制頂點(diǎn)的算法求解NURBS的控制頂點(diǎn),對船體進(jìn)行幾何重構(gòu),其主要特點(diǎn)是無需給定船舶型線首尾端切矢。
給定n+1個(gè)數(shù)據(jù)點(diǎn)pi(i=0,1,···,n,p0,pn),作為樣條曲線的首末端點(diǎn)。p0,p2,···,pn?2,pn作為三次樣條插值曲線的n-1個(gè)連接點(diǎn),p1,pn?1不再為三次樣條插值曲線的連接點(diǎn)。故對應(yīng)的三次樣條曲線的控 制 頂 點(diǎn) 個(gè) 數(shù) 為n+1,即bi(i=0,1,···,n)。三次B樣條曲線的節(jié)點(diǎn)矢量為
式 中:u0=u1=u2=u3,un+1=un+2=un+3=un+4,三 次 樣條曲線的定義域?yàn)閡∈[u3,un+1]。將節(jié)點(diǎn)值依次代入式(5), 應(yīng)滿足插值條件:
求解n+1個(gè)控制頂點(diǎn)需要n+1個(gè)方程,式(11)有n-3個(gè)方程,需補(bǔ)充如下4個(gè)方程:
式 中:t1,tn?1分 別是p1,pn?1對 應(yīng) 的 參 數(shù) 節(jié)點(diǎn)值,其中t1∈[u3,u4],tn?1∈[un,un+1]。將式(11)、(12)合寫成求解n+1個(gè)控制頂點(diǎn)bi,i=0,1,···,n的矩陣形式:
為了方便快速求解方程,將式(13)化簡為三對角方程組的追趕法求解形式:
式中:
在式(16)中的基函數(shù)用式(2)deBoor-Cox遞推公式求解,式(14)就可以用追趕法[14]求解出NURBS曲線的n+1個(gè)控制頂點(diǎn)。
對于數(shù)據(jù)點(diǎn)的參數(shù)化,即使相同的一組數(shù)據(jù)點(diǎn)采用同一種插值方法,選擇數(shù)據(jù)點(diǎn)的參數(shù)化方法不同也可能求得的插值曲線不同。一般主要有4種參數(shù)化方法[15]:均勻參數(shù)化法、積累弦長參數(shù)化法、向心參數(shù)化法和福利參數(shù)化法,本文NURBS曲線采用積累弦長參數(shù)化法確定節(jié)點(diǎn)值,使定義域內(nèi)節(jié)點(diǎn)值與數(shù)據(jù)點(diǎn)p0,p2,···pn?2,pn對應(yīng)。
單位化處理:
節(jié)點(diǎn)取值:
從式(19)可以看出,t1與p1對 應(yīng),tn?1與pn?1對應(yīng),為了避免首末曲線段的曲率突變,此非節(jié)點(diǎn)條件[12]等價(jià)于邊界條件。
通過C++程序設(shè)計(jì),圖1為NURBS技術(shù)的實(shí)現(xiàn)流程圖。根據(jù)論文前兩節(jié)提供的算法計(jì)算NURBS曲線的控制頂點(diǎn)、節(jié)點(diǎn)矢量和基函數(shù),運(yùn)用u、v兩個(gè)參數(shù)方向計(jì)算可以生成NURBS曲面,多個(gè)曲面拼接生成船體整個(gè)幾何外型。給定船體型線的型值點(diǎn)初始條件,通過自行設(shè)計(jì)型線參數(shù)變量和權(quán)重因子,可以實(shí)現(xiàn)船體離散化表達(dá)和船體型線改變。
圖1 NURBS技術(shù)的程序?qū)崿F(xiàn)
如圖2(a),以DTMB5415某站位橫剖線為例,繪制出型線的插值點(diǎn)、控制頂點(diǎn)和型值點(diǎn)對比圖。通過對第1~5個(gè)控制頂點(diǎn)和對應(yīng)的權(quán)因子進(jìn)行微調(diào),圖2(b)給出了原橫剖型線和微調(diào)后的橫剖型線的變形對比??梢钥闯?,根據(jù)控制頂點(diǎn)(權(quán)因子為1)和基函數(shù)插值出來的點(diǎn)必定經(jīng)過橫剖線,多邊形控制頂點(diǎn)和權(quán)因子改變可以控制橫剖線的變形。本文用求解曲線與原型線的絕對誤差ε來評估曲線重構(gòu)精度:
式中:pi為原型值點(diǎn);p(ui)為曲線u方向參數(shù)值對應(yīng)的插值點(diǎn)。
圖2 NURBS曲線的重構(gòu)與變形
如圖2(c),求解橫剖線曲線誤差,從圖中可以看出,曲線最大誤差不超過0.073 1 mm,平均誤差為0.046 7 mm。
可以得出,通過本文前兩節(jié)提供的算法計(jì)算NURBS曲線不需要型線首末端切矢量,不但簡化了計(jì)算過程,且具有優(yōu)良的變形能力,曲線精度較高。
由一組數(shù)據(jù)點(diǎn)通過一次反算、插值可以得到NURBS曲線,從二維上升到三維,由一組曲線通過兩個(gè)方向的反算、插值就可以得到NURBS曲面。 船體復(fù)雜曲面的重構(gòu)與變形如圖3。
圖3 船體復(fù)雜曲面的重構(gòu)與變形
圖3(a)以DTMB5415船型船艏為例,初始條件為一組水平型線上的型值點(diǎn),可以得到船艏的控制網(wǎng)格。通過改變船艏控制網(wǎng)和對應(yīng)的權(quán)因子,圖3(c)和圖3(d)給出原船艏和改變后的原船艏對比。本文用求解曲面與原船型的絕對誤差ε來評估曲面重構(gòu)精度。
式中:pi,j為原型值點(diǎn),p(ui,vj)為曲面u、v方向參數(shù)值對應(yīng)的插值點(diǎn)。
如圖3(b),以船體復(fù)雜曲面球艏為例,通過誤差等高線分析可知,曲面插值最大誤差為0.178 5 mm,平均誤差為0.049 4 mm??梢缘贸?,NURBS曲面具有良好的變形能力,且對于船體曲面的表達(dá)精度較高。
為了實(shí)現(xiàn)船體曲面快速分割,如圖4(a),DTMB 5415船艏和三維平面相交,對其交線求解展開研究,本文采用了二分法、黃金分割、斐波那契法對交線參數(shù)區(qū)間進(jìn)行迭代,交線參數(shù)值求解變化曲線如圖4(b),其交線參數(shù)區(qū)間收斂精度為0.000 1。如表1,在區(qū)間收斂精度為0.000 1的情況下,通過對比船艏與三維平面求交算法的迭代次數(shù)和交線求解用時(shí),二分法更適用于船體曲面分割。
圖4 船體曲面與三維平面求交
對于船體整個(gè)曲面構(gòu)型,不同船型的曲面復(fù)雜度也不一樣,本文以DTMB5415船型為例,其存在折角、曲率變化較大的曲面,圖5(a)是通過NURBS曲線重構(gòu)的DTMB5415船體橫剖型線,圖5(b)和圖5(c)繪制的是多個(gè)NURBS曲面拼接構(gòu)成DTMB5415船體曲面。圖5(b)為面元數(shù)325的船體曲面,圖5(c)為面元數(shù)1 399的船體曲面,且對艏艉部進(jìn)行了加密。通過二分法快速分割曲面,圖5(d)為面元數(shù)486的DTMB5415船體水下曲面,其可以為邊界元法提供計(jì)算模型。從上述得出,在NURBS技術(shù)下可以實(shí)現(xiàn)船體曲面拼接、分割和局部區(qū)域加密等功能。
本文基于NURBS技術(shù)實(shí)現(xiàn)了縮尺比為24.83的DTMB5415船體幾何重構(gòu),對NURBS技術(shù)關(guān)鍵求解方法與幾何重構(gòu)效果展開研究與分析,可得出如下結(jié)論:
1)針對船體幾何構(gòu)型研究過程,將一種NURBS曲線(曲面)控制頂點(diǎn)(控制網(wǎng))求解算法運(yùn)用于船體幾何重構(gòu),無需型線切矢量初始條件。通過本文編寫的計(jì)算程序?qū)TMB5415船型幾何重構(gòu)過程研究發(fā)現(xiàn),NURBS技術(shù)下的船體幾何重構(gòu)具有曲面變形、曲面拼接、曲面分割、局部區(qū)域加密等功能。
2)通過重構(gòu)誤差分析可知,基于該控制頂點(diǎn)反算算法的幾何重構(gòu)效果很好,其平均誤差不超過0.05 mm,隨機(jī)選取的橫剖型線最大誤差為0.073 1 mm,船艉復(fù)雜曲面最大誤差為0.178 5 mm。
3)通過對比曲面求交算法的迭代次數(shù)和交線求解用時(shí),在參數(shù)區(qū)間收斂精度為0.000 1的情況下,二分法更適用于船體曲面分割。