周燕芳
(廣州市城市規(guī)劃勘測設(shè)計(jì)研究院,廣東廣州 510060)
船體是復(fù)雜的不規(guī)則體,傳統(tǒng)的計(jì)算實(shí)體船體體積方法是先建立數(shù)學(xué)模型,再測出特征點(diǎn)、關(guān)鍵點(diǎn)后進(jìn)行擬合。擬合后將船體沿三個(gè)互相垂直的方向切片,這樣三維復(fù)雜幾何體的幾何特性計(jì)算就轉(zhuǎn)化為一系列平面的幾何特性計(jì)算[1]。此方法與現(xiàn)代化的性能分析計(jì)算自動(dòng)化、智能化、高精度的趨勢不相適應(yīng)。
本文提出并設(shè)計(jì)了基于 NURBS[2](Non-Uniform Rational B-Spline,非均勻有理B樣條)的船體體積計(jì)算程序,能直接在三維空間下計(jì)算船體的體積。對(duì)已建造好的船體,利用三維激光掃描技術(shù)得到船體表面大量激光點(diǎn)云數(shù)據(jù)。經(jīng)過點(diǎn)云數(shù)據(jù)的預(yù)處理和分析,重構(gòu)NURBS曲面來擬合表達(dá)船體表面,最終得到用來描述三維船體的互相銜接的 NURBS曲面數(shù)據(jù)。NURBS曲面數(shù)據(jù)可進(jìn)行規(guī)則化格網(wǎng)輸出,根據(jù)曲面的特性輸出不同間隔的規(guī)則化格網(wǎng)。
基于NURBS曲面數(shù)據(jù)的船體體積計(jì)算程序關(guān)鍵算法有:
①船體NURBS曲面數(shù)據(jù)的三角剖分算法;
②船體曲面交線三角形的計(jì)算;
③船體曲面與任意高度的求交算法;
④封閉三維曲面體的體積計(jì)算。
AutoCAD具有強(qiáng)大的圖形交互功能,并且支持多種方式的二次開發(fā)。ObjectARX以C++為編程語言,采用先進(jìn)的面向?qū)ο蟮木幊淘恚峁┛膳cAuto-CAD直接交互的開發(fā)環(huán)境。同時(shí)包括一組動(dòng)態(tài)鏈接庫(DLL),庫中包含一組通用工具,使得二次開發(fā)者可以充分利用AutoCAD的開放結(jié)構(gòu),直接訪問Auto-CAD數(shù)據(jù)庫結(jié)構(gòu)、圖形系統(tǒng)以及CAD幾何造型核心,以便能在運(yùn)行期間實(shí)時(shí)擴(kuò)展AutoCAD的功能[3]。基于ObjectARX進(jìn)行程序開發(fā),可以讓用戶有更加直觀的了解。
以Visual Studio.net 2005為編程環(huán)境,ObjectARX 2008為開發(fā)工具,程序采用非模態(tài)對(duì)話框方式,方便用戶進(jìn)行圖形交互。對(duì)話框界面盡量做到界面簡潔、直觀,如圖1所示。

圖1 程序界面
曲面三角網(wǎng)格生成算法有很多,總的來說可以分為映射法和自動(dòng)網(wǎng)格生成法兩類[4]。映射法[5]是在參數(shù)域上利用平面網(wǎng)格生成技術(shù)進(jìn)行剖分,然后將參數(shù)域上的網(wǎng)格結(jié)點(diǎn)映射到實(shí)空間,并保持參數(shù)域上網(wǎng)格結(jié)點(diǎn)的連接關(guān)系,從而得到曲面的三角剖分。由于船體曲面是基于NURBS的參數(shù)曲面描述,所以采用映射法比較合適。

圖2 曲面數(shù)據(jù)的三角剖分
船體三維激光點(diǎn)云數(shù)據(jù)經(jīng)過預(yù)處理后是按規(guī)則化格網(wǎng)輸出的N×M的面片數(shù)據(jù),對(duì)每個(gè)規(guī)則化格網(wǎng)單元采用三角剖分分為兩個(gè)三角形。如圖2所示的點(diǎn)(C0,R0),點(diǎn)(C1,R0),點(diǎn)(C0,R1)和點(diǎn)(C1,R1)構(gòu)成的格 網(wǎng) 分 成 三 角 形 D(C0,R0)D(C1,R1)D(C1,R0)和 三 角 形D(C0,R0)D(C0,R1)D(C1,R1)。定義三角形結(jié)構(gòu)體,記錄三角形的3個(gè)頂點(diǎn)索引值,并計(jì)算三角形的法向量、重心坐標(biāo),用于判斷三棱錐體積疊加時(shí)的正負(fù)。

給定計(jì)算水線高度hgt,在計(jì)算高度附近的三角形會(huì)被分割。找出三角形的最大Z值maxz,最小Z值minz,以及Z值等于hgt的頂點(diǎn)的個(gè)數(shù)ZEqNum。任意高度水線hgt與三角形之間的關(guān)系有如下幾種情況(如圖3):
①hgt≤minz,不參與體積計(jì)算;
②hgt==maxz且ZEqNum==2,不參與體積計(jì)算,將此三角形作為交線三角形;
③hgt>maxz或者h(yuǎn)gt==maxz且 ZEqNum==1,參與體積計(jì)算;
④minz<hgt<maxz,且三角形中只有一個(gè)點(diǎn)的Z值小于hgt,此三角形不參與體積計(jì)算,求出交線點(diǎn)坐標(biāo)存儲(chǔ)于交線三角形中;
⑤minz<hgt<maxz,且三角形中有兩個(gè)點(diǎn)的坐標(biāo)小于hgt,此三角形不參與體積計(jì)算,求出交線點(diǎn)坐標(biāo)并將相交部分分割為兩個(gè)三角形作為交線三角形;
⑥ZEqNum==3,不參與體積計(jì)算。

圖3 任意高度水線與三角形的位置關(guān)系
在3.3節(jié)所求的交線三角形中,將兩個(gè)點(diǎn)的Z值均等于hgt的線段提取出來。根據(jù)線段的空間位置關(guān)系(兩線段首尾點(diǎn)的距離理論上為0,對(duì)個(gè)別曲面有交錯(cuò)的情況可放寬連接條件)將所有線段連接成首尾相接的閉合曲線。然后利用CAD中多義線的getArea函數(shù)即可獲得閉合曲線所圍成的面積。對(duì)于如圖4所示的一閉合曲線包含于另一閉合曲線的特殊情況,被包含閉合曲線的面積應(yīng)為負(fù),包含閉合曲線的面積為正,任意兩個(gè)多邊形的關(guān)系可采用文獻(xiàn)[6]所述方法進(jìn)行判斷。

圖4 多邊形位置關(guān)系
當(dāng)確保所有三角形的法向量均朝外后,選擇任意的起算點(diǎn)(坐標(biāo)原點(diǎn)或封閉區(qū)域的重心點(diǎn)等)與三角形構(gòu)成三棱錐,船體的體積可以分為三部分計(jì)算:①位于交線下面的完整的三角形與起算點(diǎn)所構(gòu)成的三棱錐的體積;②交線三角形與起算點(diǎn)所構(gòu)成的三棱錐的體積;③交線所圍成的不規(guī)則閉合曲面與起算點(diǎn)所構(gòu)成的不規(guī)則體的體積。計(jì)算時(shí)均需考慮三角形法向量與所選計(jì)算起點(diǎn)和三角形重心所構(gòu)成的向量之間的方向余弦(圖5):若方向余弦為正,則三棱錐體積為正;若方向余弦為負(fù),則三棱錐體積為負(fù)。

圖5 三角形方向余弦
用三維激光掃描的方法對(duì)某一封閉艙室進(jìn)行掃描并得到其NURBS曲面數(shù)據(jù),對(duì)其進(jìn)行三角剖分如圖6所示。三角形所有法向量均朝外,不需要進(jìn)行修改。程序所算體積與傳統(tǒng)方法所算的體積如表1所示。由于掃描時(shí)艙室存在晃動(dòng),用NURBS曲線擬合出來的船體下部存在凹凸不平,因此底部計(jì)算的體積的相對(duì)誤差較其他高度大。但總的看來,兩者的差別不大,在允許誤差范圍之內(nèi)。

圖6 艙室三角剖分網(wǎng)圖

計(jì)算體積比較 表1
本文設(shè)計(jì)并實(shí)現(xiàn)了基于NURBS曲面數(shù)據(jù)的船體體積的計(jì)算程序,實(shí)現(xiàn)了船體體積計(jì)算的自動(dòng)化與智能化。與傳統(tǒng)的先建立數(shù)學(xué)模型,再測出特征點(diǎn)、關(guān)鍵點(diǎn)后進(jìn)行擬合計(jì)算的單點(diǎn)測量方法相比,在效率和技術(shù)上得到了更好的改進(jìn),提高了計(jì)量的準(zhǔn)確性和可靠性,實(shí)現(xiàn)了幾何測量法體積計(jì)算的從低精度向高精度的發(fā)展。
[1]秦敬松.基于激光掃描點(diǎn)云數(shù)據(jù)的船體體積計(jì)算方法研究[D].武漢:武漢大學(xué),2008.
[2]施法中.計(jì)算機(jī)輔助幾何設(shè)計(jì)與非均勻有理 B樣條[M].北京:高等教育出版社,2001:46~49.
[3]俞曉,苗放.基于ObjectARX的AutoCAD二維圖形可控精度外包多邊形的算法實(shí)現(xiàn)[J].成都理工大學(xué)學(xué)報(bào),2008(10):559~562.
[4]徐松,王劍英.曲面的自適應(yīng)三角網(wǎng)格剖分[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2000,12(4):267~271.
[5]王小娜.基于映射法的散亂點(diǎn)三角網(wǎng)格劃分與拼接算法研究[D].秦皇島:燕山大學(xué)大學(xué),2009.
[6]張全伙,曾曉帆,范慧琳等.任意兩個(gè)多邊形的求交算法[J].華僑大學(xué)學(xué)報(bào),1995(1):111~115.