朱云福,許 丹
(1.江西省地質(zhì)環(huán)境監(jiān)測(cè)總站,江西 南昌 330095;2.安徽省地質(zhì)環(huán)境監(jiān)測(cè)總站,安徽 合肥 230001)
地質(zhì)界面模擬是三維地質(zhì)建模最重要內(nèi)容之一,對(duì)大多數(shù)沉積巖層界面,在地表面上投影是不重疊的,屬于單值地質(zhì)界面,單值地質(zhì)界面模擬技術(shù)發(fā)展較成熟;而對(duì)金屬礦瘤、風(fēng)蝕蘑菇體等在地表面上投影將部分重疊,屬于多值地質(zhì)界面,多值地質(zhì)界面模擬是三維地質(zhì)建模難點(diǎn)。周軍霞等(2008)和徐能雄等(2011)對(duì)多值地質(zhì)界面模擬進(jìn)行研究,采用離散光滑插值法模擬蘑菇體。本文提出利用動(dòng)態(tài)DSI插值法控制網(wǎng)格面生成,實(shí)現(xiàn)多值地質(zhì)界面的模擬方法[1]。
DSI法即離散光滑插值,是法國(guó)Nancy大學(xué)J.L.Mallet教授提出的(Mallet,1992),是著名地質(zhì)建模軟件GOCAD核心技術(shù)。該方法依賴于網(wǎng)格結(jié)點(diǎn)拓?fù)潢P(guān)系,不以空間坐標(biāo)為參數(shù),是一種無維數(shù)插值方法。DSI基本內(nèi)容是對(duì)一個(gè)離散化自然體模型,建立相互間聯(lián)絡(luò)網(wǎng)絡(luò),如網(wǎng)絡(luò)上點(diǎn)值滿足某種約束條件,則未知結(jié)點(diǎn)上的值可通過解一個(gè)線性方程得到。
(1)固定點(diǎn)約束。插值曲面須通過的點(diǎn)稱固定點(diǎn),包括部分關(guān)鍵原始采樣數(shù)據(jù)點(diǎn)及其它已知固定邊界點(diǎn)等。固定點(diǎn)對(duì)應(yīng)的約束是固定點(diǎn)約束。這種約束可通過使插值曲面網(wǎng)格上某個(gè)結(jié)點(diǎn)坐標(biāo)與對(duì)應(yīng)固定點(diǎn)坐標(biāo)一致來設(shè)定。在算法實(shí)現(xiàn)中直接將對(duì)應(yīng)點(diǎn)坐標(biāo)設(shè)置為固定點(diǎn)坐標(biāo),不參加迭代計(jì)算,而只作為已知數(shù)據(jù)投入運(yùn)算[2]。
推進(jìn)波前法(簡(jiǎn)稱AFT)常用于平面區(qū)域三角形網(wǎng)格自動(dòng)生成,經(jīng)近年來發(fā)展已成為通用的全自動(dòng)網(wǎng)格生成方法之一。
(2)構(gòu)建三角形網(wǎng)格。本文采用推進(jìn)波前法構(gòu)建三角形網(wǎng)格,起過程為將給定點(diǎn)集的邊界作為剖分前沿,依次以前沿邊界線段為三角形的一邊,在邊界點(diǎn)與內(nèi)部點(diǎn)中尋找組成三角形頂角最大的點(diǎn)為三角形頂點(diǎn);將已形成三角形的邊界線段從邊界鏈表中刪除,形成新邊界;重復(fù)上述過程直到鏈表為空為止。
原始三角網(wǎng)格在DSI插值迭代模擬蘑菇體時(shí),組成蘑菇體的三角網(wǎng)格面片表面積不斷增大,該區(qū)域三角形邊長(zhǎng)邊長(zhǎng),需要進(jìn)行三角網(wǎng)格細(xì)分。可以通過設(shè)定三角形邊長(zhǎng)長(zhǎng)度閥值e的方法實(shí)現(xiàn)三角網(wǎng)格細(xì)分,當(dāng)某三角形邊長(zhǎng)長(zhǎng)度大于閥值e時(shí),即對(duì)該三角形進(jìn)行細(xì)分[3]。
(1)點(diǎn)集CNode表征節(jié)點(diǎn),包含的數(shù)據(jù)成員為點(diǎn)的序號(hào)、點(diǎn)空間坐標(biāo),
(2)三角形邊類集CSide 表征三角形邊,包含的數(shù)據(jù)成員為邊的序號(hào),邊的起點(diǎn)號(hào)、邊的終點(diǎn)號(hào)、邊處在三角形的序號(hào)、邊的對(duì)邊序號(hào)。
(3) 三角形類集CTrgl表征三角形,包含的數(shù)據(jù)成員為三角形的序號(hào)、三角形三個(gè)頂點(diǎn)號(hào)、三角形三條邊的序號(hào)和三角形法向向量。
因本文采用三維動(dòng)態(tài)DSI方法,因模型插值曲面上每個(gè)三角形所含模糊控制點(diǎn)隨迭代進(jìn)行會(huì)發(fā)生變化,故每迭代一次都要重新計(jì)算模糊控制點(diǎn)約束。而除去模糊控制點(diǎn)約束的DSI 迭代方程只與結(jié)點(diǎn)間拓?fù)潢P(guān)系有關(guān),只要拓?fù)潢P(guān)系不變,這些約束系數(shù)就不會(huì)改變,因此可一次計(jì)算完畢,不需隨迭代重復(fù)計(jì)算。迭代算法如下:
} //for_all結(jié)束 }//while迭代穩(wěn)定結(jié)束 Trglxifen();//三角形細(xì)分
} while(三角網(wǎng)格發(fā)生細(xì)分,進(jìn)一步插值)
本文以蘑菇體模型作實(shí)例,使用Microsoft Visual C++ 6.0中研制了多值地質(zhì)界面模擬程序MGS,并在OpenGL環(huán)境中實(shí)現(xiàn)可視化,以實(shí)現(xiàn)多值地質(zhì)界面模擬。
DSI動(dòng)態(tài)插值模擬多值地質(zhì)界面——蘑菇體過程如下:
(1)給點(diǎn)原始平面邊界點(diǎn)800個(gè),內(nèi)部點(diǎn)40000個(gè),采用3.1節(jié)推進(jìn)波前法剖分形成平面三角網(wǎng)格,其中邊界點(diǎn)為固定點(diǎn)約束;給定蘑菇體表面空間位置點(diǎn)集,包含468個(gè)點(diǎn),作模糊控制點(diǎn)約束,見圖4-1。
(2)在固定點(diǎn)約束和模糊控制點(diǎn)約束條件下,采用DSI插值法對(duì)原始平面三角網(wǎng)格進(jìn)行迭代插值計(jì)算,原始平面三角網(wǎng)格曲面變形成
(3)曲面變形后三角網(wǎng)格中蘑菇體區(qū)域三角形邊長(zhǎng)大于設(shè)定閥值,采用上述網(wǎng)格細(xì)分方法對(duì)三角網(wǎng)格進(jìn)行細(xì)分,直至所有三角形邊長(zhǎng)小于設(shè)定閥值。細(xì)分后模糊控制點(diǎn)約束條件對(duì)三角形網(wǎng)格的約束發(fā)生變化。
圖4-1 原始三角網(wǎng)格及其控制點(diǎn)
圖4-2 曲面變化過程(a)
圖4-3 曲面變化過程(b)
圖4-4 曲面變化過程 (c)
本文提出在基于三角網(wǎng)格拓?fù)浣Y(jié)構(gòu)基礎(chǔ)上,選擇固定控制點(diǎn)和模糊控制點(diǎn)作約束條件,結(jié)合三角形網(wǎng)格細(xì)分方法,以此控制網(wǎng)格面生成,實(shí)現(xiàn)多值地質(zhì)界面模擬方法。本文使用Microsoft Visual C++ 6.0中研制了多值地質(zhì)界面模擬程序MGS,在OpenGL環(huán)境中實(shí)現(xiàn)可視化,并以多值地質(zhì)界面-蘑菇體為模型實(shí)例,驗(yàn)證算法的有效性,實(shí)例表明以該算法具有良好的實(shí)用性。