鄒韜 李雪 楊東升 華彩成
摘要:利用OSGEarth技術(shù),基于算法模型計(jì)算數(shù)據(jù),利用delaunay三角網(wǎng)逐點(diǎn)插入法,解決任意區(qū)域值域填充技術(shù)難題,對(duì)于科學(xué)計(jì)算數(shù)據(jù)可視化分布顯示具有普適性。程序以插件的形式進(jìn)行封裝,具有較高的工程應(yīng)用價(jià)值。
關(guān)鍵詞:OSGEarth;Delaunay三角網(wǎng);科學(xué)計(jì)算可視化;插件
中圖分類(lèi)號(hào):TP311 ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)34-0020-03
Abstract:This paper uses OSGEarth technology to calculate data based on algorithm model, and uses Delaunay triangulation point by point insertion method to solve the technical problem of filling arbitrary range. It has universality for the visualization of scientific calculation data distribution. The program is encapsulated in the form of plug-in, which has high engineering application value.
Keywords: OSGEarth;Delaunay triangulation;visualization of scientific computing;plug-in
1概述
所謂“OSGEarth值域填充問(wèn)題”是指以O(shè)SGEarth平臺(tái)為基礎(chǔ),已知任意物理量在空間的離散分布,依據(jù)顏色列表與物理值對(duì)應(yīng)關(guān)系,填充該物理量任意分布區(qū)域的問(wèn)題。是科學(xué)計(jì)算可視化重要課題之一,無(wú)可回避。
1.1 OSGEarth簡(jiǎn)介
OSG是OpenSceneGraph的英文縮寫(xiě),它是一個(gè)開(kāi)放的圖形場(chǎng)景庫(kù),主要為圖形圖像應(yīng)用程序的開(kāi)發(fā)提供場(chǎng)景管理和圖形渲染優(yōu)化功能。它包括OSG核心庫(kù)、OSG工具庫(kù)、OSG插件庫(kù),及在此基礎(chǔ)上開(kāi)發(fā)出來(lái)的OSG應(yīng)用程序。OSGEarth是帶有GIS功能的OSG圖形庫(kù),它對(duì)OSG做進(jìn)一步封裝,加入對(duì)地理信息系統(tǒng)場(chǎng)景管理插件、地理數(shù)據(jù)解析插件和用戶(hù)交互插件,功能更加強(qiáng)大,其主要特點(diǎn)如下:
(1)OSGEarth是一款開(kāi)源的、基于OSG的地理信息系統(tǒng)框架庫(kù),具有良好的場(chǎng)景控制和地理信息管理能力。
(2)OSGEarth可加載多種地理信息數(shù)據(jù)源,數(shù)據(jù)源格式需符合數(shù)據(jù)驅(qū)動(dòng)格式要求。數(shù)據(jù)類(lèi)型包括:衛(wèi)星影像數(shù)據(jù),高程數(shù)據(jù),矢量數(shù)據(jù)等。數(shù)據(jù)源多為金字塔式的瓦片數(shù)據(jù),可極大提高系統(tǒng)數(shù)據(jù)加載和圖像渲染速度。
(3)平臺(tái)的場(chǎng)景管理方式是“場(chǎng)景節(jié)點(diǎn)樹(shù)”結(jié)構(gòu),場(chǎng)景樹(shù)頂端的節(jié)點(diǎn)(osg::Geode)包含各種需要渲染的幾何頂點(diǎn)和渲染狀態(tài)信息;根節(jié)點(diǎn)(osg::Group)及其派生出的各種特殊功能節(jié)點(diǎn)則作為場(chǎng)景樹(shù)的各個(gè)枝節(jié)節(jié)點(diǎn),它們也可以擁有不同的渲染狀態(tài)機(jī);有且只有一個(gè)節(jié)點(diǎn)可以直接作為整個(gè)場(chǎng)景的根節(jié)點(diǎn),使用setSceneData將其設(shè)置給場(chǎng)景的視鏡器系統(tǒng),即等同于將整個(gè)場(chǎng)景樹(shù)傳遞給渲染樹(shù)和顯示系統(tǒng)。
(4)圖形渲染功能由渲染樹(shù)完成。過(guò)程包括:用戶(hù)選定場(chǎng)景,場(chǎng)景篩選以及繪制。場(chǎng)景樹(shù)構(gòu)建完成,平臺(tái)利用渲染器,遍歷視鏡器中每個(gè)葉子節(jié)點(diǎn),設(shè)置場(chǎng)景樹(shù)各葉子節(jié)點(diǎn)狀態(tài)機(jī),實(shí)時(shí)完成更新場(chǎng)景樹(shù),根據(jù)用戶(hù)選定場(chǎng)景,裁剪多余的葉子節(jié)點(diǎn),保證渲染速度流暢、快速。
(5)用戶(hù)交互功能由事件處理器和場(chǎng)景漫游器完成。在系統(tǒng)每一幀的仿真過(guò)程中,事件處理器負(fù)責(zé)處理圖形窗口設(shè)備傳遞到事件隊(duì)列_eventQueue的各種事件,主要有鍵盤(pán)事件、鼠標(biāo)事件。場(chǎng)景漫游器取得主攝像機(jī)的視口范圍,計(jì)算主攝像機(jī)的VPW矩陣。完成場(chǎng)景坐標(biāo)轉(zhuǎn)換、放大、縮小和漫游等功能。
1.2 ITU-R.P533計(jì)算模型
該預(yù)測(cè)模型適用于最長(zhǎng)為7000 km的路徑的射線(xiàn)路徑分析、超過(guò)9000 km時(shí)應(yīng)用從擬合到測(cè)量數(shù)據(jù)的復(fù)合模式經(jīng)驗(yàn)公式,在7000-9000 km距離范圍內(nèi)應(yīng)用這兩種方法之間的平滑過(guò)渡。
確定了給定增益的無(wú)損接收天線(xiàn)的月平均基本MUF、入射天波場(chǎng)強(qiáng)和可用接收機(jī)功率。該方法包括用于預(yù)測(cè)數(shù)字系統(tǒng)性能的信道傳輸函數(shù)的參數(shù)估計(jì)。給出了電路可靠性評(píng)估的方法。信號(hào)強(qiáng)度根據(jù)ITU R測(cè)量數(shù)據(jù)庫(kù)進(jìn)行標(biāo)準(zhǔn)化。該方法要求在指定的“控制點(diǎn)”確定若干電離層特性和傳播參數(shù)。
在赤道地區(qū),在晚上(當(dāng)?shù)貢r(shí)間),由于區(qū)域電離層結(jié)構(gòu)不穩(wěn)定性,預(yù)測(cè)結(jié)果有可能出現(xiàn)偏差,而這種不穩(wěn)定性并沒(méi)有被該方法完全考慮在內(nèi),需要完善。
1.3 Delaunay三角網(wǎng)
Delaunay三角網(wǎng)具有最大的最小角及空外接圓兩大重要性質(zhì),使得剖分所得每個(gè)三角形最大限度地接近正三角形,因此它在所有的構(gòu)網(wǎng)原則中是最優(yōu)的,這使得它作為一種基本手段在計(jì)算流體力學(xué),地質(zhì)建模,科學(xué)計(jì)算可視化、地理信息系統(tǒng)、逆向工程等領(lǐng)域得到越來(lái)越多的應(yīng)用。Delaunay三角網(wǎng)具備以下優(yōu)異的特性:
(1)最接近:以近期臨的三點(diǎn)形成三角形,且各線(xiàn)段(三角形的邊)皆不相交。
(2)唯一性:無(wú)論從區(qū)域何處開(kāi)始構(gòu)建,終于都將得到一致的結(jié)果。
(3)最優(yōu)性:隨意兩個(gè)相鄰三角形形成的凸四邊形的對(duì)角線(xiàn)假設(shè)能夠互換的話(huà)。那么兩個(gè)三角形六個(gè)內(nèi)角中小的角度不會(huì)變大。
(4)最規(guī)則:假設(shè)將三角形網(wǎng)絡(luò)中的每一個(gè)三角形的最小角進(jìn)行升序排列,則Delaunay三角形網(wǎng)絡(luò)的排列得到的數(shù)值最大。
(5)區(qū)域性:新增、刪除、移動(dòng)某一個(gè)頂點(diǎn)時(shí)僅僅會(huì)影響臨近的三角形。
(6)具有凸多邊形的外殼:三角網(wǎng)最外層的邊界形成一個(gè)凸多邊形的外殼。
2原理與實(shí)現(xiàn)
2.1原理
在OSGEarth場(chǎng)景中所有繪制的節(jié)點(diǎn)數(shù)據(jù)都會(huì)加入一個(gè)osg::Group根節(jié)點(diǎn)中,而幾何圖元作為一種需要繪制的對(duì)象也有類(lèi)似的數(shù)據(jù)結(jié)構(gòu),這個(gè)類(lèi)就是osg::Geode,它的作用就是組織繪制圖元對(duì)象要素,圖元狀態(tài)機(jī)等參數(shù),然后,加入osg::Group中,在視鏡器中渲染顯示。圖元對(duì)象要素包括頂點(diǎn)Vertex,顏色color,頂點(diǎn)關(guān)聯(lián)方式和法線(xiàn)以及數(shù)據(jù)解析。結(jié)構(gòu)如圖所示:
從圖中可以看出,首先要申請(qǐng)一個(gè)osg::Geometry,然后設(shè)置圖元對(duì)象要素。具體步驟如下:
(1)指定向量數(shù)據(jù)。包括設(shè)置圖元邊界向量數(shù)據(jù)、紋理坐標(biāo)數(shù)據(jù)和頂點(diǎn)顏色值等一系列向量數(shù)據(jù)??梢酝ㄟ^(guò)下面幾個(gè)函數(shù)來(lái)實(shí)現(xiàn):
void setVertexArray(Array *array);
void setVerterData(const ArrayData&arrayData);
void setColorArray(Array *array);
void setColorDara(const ArrayData&arrayData);
(2)設(shè)置綁定方式。包括依據(jù)離散點(diǎn)值與顏色對(duì)應(yīng)關(guān)系,設(shè)置顏色容器和紋理坐標(biāo)的法線(xiàn)??梢酝ㄟ^(guò)下面函數(shù)實(shí)現(xiàn):
Void setNormalBinding(AttributeBinding a);
Void setColorBinding(AttriburreBinding a);
(3)數(shù)據(jù)解析。指定圖元各種向量數(shù)據(jù)和圖元綁定方式之后,需對(duì)向量數(shù)據(jù)進(jìn)行解析。這里采用delaunay三角網(wǎng)算法,將向量頂點(diǎn)數(shù)據(jù)以基礎(chǔ)單元類(lèi)型osg::PrimitiveSet::TRIANGLES,進(jìn)行解析。具體解析過(guò)程詳見(jiàn)后續(xù)章節(jié)。
(4)各圖元參數(shù)設(shè)置完成后,加入osg::Geometry中渲染,使能葉子節(jié)點(diǎn),加入場(chǎng)景樹(shù)根節(jié)點(diǎn),在視景器中圖像更新顯示,完成圖元繪制。
2.2 實(shí)現(xiàn)
本程序采用C++語(yǔ)言編程,利用其語(yǔ)言本身簡(jiǎn)潔、使用靈活、數(shù)據(jù)結(jié)構(gòu)系統(tǒng)化、控制流程結(jié)構(gòu)化、可移植性好等優(yōu)點(diǎn),在編程過(guò)程中盡量發(fā)揮語(yǔ)言?xún)?yōu)勢(shì)。程序以插件的形式進(jìn)行封裝,方便系統(tǒng)集成調(diào)用,工程應(yīng)用價(jià)值較大。
利用ITU算法模型,指定發(fā)射機(jī)發(fā)射功率,天線(xiàn)發(fā)射增益,接收增益,工作頻率等工作參數(shù),設(shè)定通信成功信噪比,給出不同工作頻率,指定目標(biāo)區(qū)域的通信信道信噪比數(shù)據(jù)。在osgEarth系統(tǒng)平臺(tái)上,應(yīng)用該科學(xué)計(jì)算可視化插件,給出通信信噪比分布圖,設(shè)定可通信噪比門(mén)限下限值,進(jìn)而判斷通信可通率情況,方便后續(xù)項(xiàng)目工作展開(kāi)。程序工作流程圖如下:
利用delaunay三角網(wǎng)算法,解析圖元離散點(diǎn)可通信噪比數(shù)據(jù)子程序的結(jié)構(gòu)流程圖如下所示:
主要代碼如下所示:
m_rpHGeo = new osg::Geometry;
m_rpHGeo->setDataVariance(osg::Object::DYNAMIC);
m_rpHGeo->setUseDisplayList(false);
m_rpHGeo->setUseVertexBufferObjects(true);
m_rpHGeo->getOrCreateStateSet()->setRenderBinDetails(11,"DepthSortedBin");
osg::ref_ptr
osg::ref_ptr
osg::ref_ptr
m_CdlauNay->push_backPt(pArrayXYZ);
m_CdlauNay->createTn();
int triNum = m_CdlauNay->findTriNum();
long p0No=0,p1No=0,p2No=0;
for(int i=0;i { for(int j=0;j { m_CdlauNay->findPointIndex(j,p0No,p1No,p2No); if(i == p0No || i == p1No || i == p2No) { rpDrawEle->push_back(p0No); rpDrawEle->push_back(p1No); rpDrawEle->push_back(p2No); } } } m_rpHGeo->setVertexArray(pArrayXYZ); m_rpHGeo->setColorArray(pColorArray,osg::Array::BIND_PER_VERTEX); m_rpHGeo->addPrimitiveSet(rpDrawEle); m_rpHGeode->addDrawable(m_rpHGeo); osg::Group root->addchild(m_rpHGeode); 不同工作頻率可通信噪比分布圖如下所示: 3結(jié)束語(yǔ) 本文以osgEarth地理信息平臺(tái)為基礎(chǔ),提出利用Delaunay三角網(wǎng)算法,解決科學(xué)計(jì)算可視化值域填充問(wèn)題的一種方法。該方法結(jié)構(gòu)清晰、使用靈活,適用二維任意域離散點(diǎn)數(shù)值填充問(wèn)題。程序以插件形式封裝,方便系統(tǒng)集成、調(diào)用,具有較高的工程應(yīng)用價(jià)值。本方法目前只適用二維值域填充問(wèn)題,對(duì)于三維值域填充問(wèn)題,需要做進(jìn)一步研究和實(shí)現(xiàn)。 參考文獻(xiàn): [1] 蔣瑜,杜斌,盧軍,等.基于Delaunay三角網(wǎng)的等值線(xiàn)繪制算法[J].計(jì)算機(jī)應(yīng)用研究,2010(1):101-103. [2] 方勇,劉鵬,胡海彥.一種Delaunay三角網(wǎng)的快速生成算法[J].測(cè)繪科學(xué)與工程,2006,26(3):16-20. [3] 武曉波,土世新,肖春生.Delaynay三角網(wǎng)的生成算法研究[J].測(cè)繪學(xué)報(bào),1999,28(1):28-35. [4] 肖鵬,劉更代,徐明亮.OpenSceneGraph三維渲染引擎編程指南[M].北京:清華大學(xué)出版社,2010. 【通聯(lián)編輯:梁書(shū)】