• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MeshViz的動(dòng)態(tài)交互式圖例技術(shù)研究

      2013-09-26 03:26:20聶永丹趙建民侯俊龍東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院黑龍江大慶163318
      關(guān)鍵詞:圖例監(jiān)聽(tīng)控件

      張 巖,聶永丹,趙建民,侯俊龍 (東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江 大慶 163318)

      Open Inventor是目前世界上使用最廣泛的面向?qū)ο蟮睦L圖軟件接口,允許用戶通過(guò)搭積木的方式來(lái)構(gòu)建復(fù)雜的三維場(chǎng)景,使得用戶只需花費(fèi)很少的時(shí)間就可以構(gòu)造出復(fù)雜的三維場(chǎng)景[1]。Open Inventor中根據(jù)不同行業(yè)的需求提供了若干擴(kuò)展模塊,其中MeshViz XLM擴(kuò)展模塊提供了強(qiáng)大的應(yīng)用科學(xué)領(lǐng)域中模型網(wǎng)格繪制、提取和數(shù)據(jù)匹配功能,并且包含了高級(jí)的數(shù)據(jù)可視化設(shè)計(jì)組件、復(fù)雜曲面、三維統(tǒng)計(jì)圖等多種可視化對(duì)象,DialogViz擴(kuò)展模塊提供了可以與場(chǎng)景交互的編程接口,使用DialogViz節(jié)點(diǎn)可以控制和操作場(chǎng)景中的對(duì)象,并且DialogViz節(jié)點(diǎn)的使用與其他Open Inventor的使用方式?jīng)]有區(qū)別[2]。下面,筆者對(duì)基于MeshViz的動(dòng)態(tài)交互式圖例技術(shù)進(jìn)行了研究。

      1 使用MeshViz構(gòu)造圖例

      1.1 MeshViz圖例節(jié)點(diǎn)

      MeshViz提供的圖例節(jié)點(diǎn)類型是MoLegend,它能以一個(gè)矩形的方式給出當(dāng)前色譜的彩色圖例,在這個(gè)矩形圖例上可以設(shè)置圖例的名稱、最大值與最小值等,同時(shí)利用MoLegend提供的編程接口可以實(shí)現(xiàn)展示形狀、方向、顏色映射類型的動(dòng)態(tài)設(shè)定等功能。

      1.2 MeshViz顏色映射節(jié)點(diǎn)

      顏色映射節(jié)點(diǎn)會(huì)根據(jù)一個(gè)數(shù)值的大小計(jì)算該數(shù)值對(duì)應(yīng)的顯示顏色,相應(yīng)的顏色就會(huì)在一個(gè)數(shù)據(jù)集合對(duì)應(yīng)的數(shù)據(jù)體表面上顯示出來(lái),顏色映射節(jié)點(diǎn)實(shí)現(xiàn)了一種簡(jiǎn)單的顏色參照表的定義方式,在MeshViz中提供了4種類型的顏色映射節(jié)點(diǎn)。

      1)MoLevelColorMapping節(jié)點(diǎn) 該節(jié)點(diǎn)定義了具有N個(gè)數(shù)量級(jí)的數(shù)據(jù)集合和與之對(duì)應(yīng)的N-1種顏色,它的映射方法是如果某個(gè)數(shù)據(jù)v值的在Vk≤v≤Vk+1范圍內(nèi),則該數(shù)據(jù)對(duì)應(yīng)的屬性將被映射到顏色Ck上去。

      2)MoLinearColorMapping節(jié)點(diǎn) 該節(jié)點(diǎn)為數(shù)據(jù)與顏色集合定義了一種線性映射的方式,假設(shè)某個(gè)數(shù)據(jù)v值的在Vk≤v≤Vk+1范圍內(nèi),它對(duì)應(yīng)的顏色Ck取決于(Vk,Ck)和(Vk+1,Ck+1)的線性映射關(guān)系。

      3)MoPredefinedColorMapping節(jié)點(diǎn) 該節(jié)點(diǎn)是一種預(yù)定義的色譜,使用MoPredefinedColorMapping色譜數(shù)值對(duì)應(yīng)的顏色與預(yù)定義的顏色范圍相匹配,Open inventor根據(jù)不同業(yè)務(wù)的需要提供了9種預(yù)定義色譜類型,用戶可以直接從中選用合適色譜即可[3]。

      4)MoCustomColorMapping節(jié)點(diǎn) 該節(jié)點(diǎn)是一個(gè)實(shí)現(xiàn)了MiColorMapping接口的類,必須實(shí)現(xiàn)的函數(shù)是getColor(),getColor()的作用是根據(jù)一個(gè)給定的數(shù)值轉(zhuǎn)成SbColorRGBA類型的數(shù)值,從而允許用戶實(shí)現(xiàn)任何方式的轉(zhuǎn)換函數(shù)。

      1.3 等價(jià)數(shù)值節(jié)點(diǎn)

      在數(shù)據(jù)映射過(guò)程中,色譜上每一種顏色和每一種屬性值相對(duì)應(yīng),利用不同顏色可以展示出多種不同屬性的效果,相應(yīng)的與某一種顏色對(duì)應(yīng)的數(shù)值叫做等價(jià)數(shù)值。通過(guò)定義等價(jià)數(shù)值可以設(shè)定需要展示數(shù)據(jù)的范圍,MeshViz提供了PbIsovaluesList和PoIsovaluesList 2種定義等價(jià)數(shù)值的類型,因此可以使用下列2種方式定義等價(jià)數(shù)值:①定義一個(gè)繼承自PoIsovaluesList類的子類,將該類的對(duì)象添加到場(chǎng)景中;②定義一個(gè)繼承自PbIsovaluesList的對(duì)象,調(diào)用setIsovaluesList()函數(shù)和可視化對(duì)象相關(guān)聯(lián)。在MeshViz可以方便地使用上述方法。

      2 使用DialogViz交互

      2.1 DialogViz初始化

      DialogViz模塊中包括了SoTopLevelDialog、SoMenuBar和SoMenuPopup類型的節(jié)點(diǎn),以及從SoDialogGroup派生的SoColumnDialog、SoRowDialog和SoTabDialog類型的節(jié)點(diǎn)。在交互接口程序中可以同時(shí)使用以上多種節(jié)點(diǎn)。DialogViz的初始化支持2種方式:既可以從程序中直接用代碼定義,也可以從已經(jīng)定義好的文件中讀取。創(chuàng)建一個(gè)DialogViz窗口的步驟如下:①創(chuàng)建一個(gè)SoTopLevelDialog節(jié)點(diǎn);②設(shè)置SoTopLevelDialog節(jié)點(diǎn)的屬性域;③創(chuàng)建窗口的子節(jié)點(diǎn)控件如按鈕,滑塊等;④將創(chuàng)建的子節(jié)點(diǎn)控件添加到SoTopLevelDialog節(jié)點(diǎn)中;⑤調(diào)用buildDialog()函數(shù)時(shí),DialogViz窗口就會(huì)顯示到屏幕上。

      2.2 DialogViz節(jié)點(diǎn)交互

      Open Inventor中場(chǎng)景的交互采用回調(diào)函數(shù)方式[4],與之不同的是DialogViz采用Java語(yǔ)言類似的監(jiān)聽(tīng)機(jī)制,DialogViz中提供了一系列預(yù)定義的監(jiān)聽(tīng)類,通過(guò)監(jiān)聽(tīng)類就可以完成用戶事件的交互響應(yīng)。建立一個(gè)監(jiān)聽(tīng)的步驟如下:①定義一個(gè)從預(yù)定義DialogViz接口類派生的監(jiān)聽(tīng)類;②在定義的監(jiān)聽(tīng)類中覆蓋父類的虛函數(shù),如dialogPushButton()、dialogCheckBox()、menuRadioButtons()等函數(shù);③將監(jiān)聽(tīng)類添加到場(chǎng)景中。

      3 動(dòng)態(tài)交互式圖例的實(shí)現(xiàn)

      3.1 構(gòu)造圖例

      利用MeshViz模塊創(chuàng)建一個(gè)圖例需要進(jìn)行如下步驟的操作:①初始化圖例節(jié)點(diǎn),通過(guò)指定圖例大小、坐標(biāo)以及標(biāo)題和數(shù)值的位置來(lái)定義圖例節(jié)點(diǎn);②在場(chǎng)景中插入PoDataMapping類型數(shù)據(jù)映射對(duì)象并與圖例節(jié)點(diǎn)關(guān)聯(lián);③在場(chǎng)景中插入PoIsovaluesList類型等價(jià)數(shù)值對(duì)象并與圖例節(jié)點(diǎn)關(guān)聯(lián) (可選);④指定圖例中所要顯示數(shù)據(jù)的最大值、最小值以及過(guò)渡數(shù)值。如果定義了數(shù)據(jù)映射節(jié)點(diǎn)對(duì)象或者等價(jià)數(shù)值節(jié)點(diǎn)對(duì)象,可以通過(guò)這2類節(jié)點(diǎn)圖例指定數(shù)值范圍;⑤將圖例節(jié)點(diǎn)添加到場(chǎng)景中。

      采用模塊化程序設(shè)計(jì)思想,為方便其他模塊調(diào)用[4],筆者將動(dòng)態(tài)交互圖例封裝在一個(gè)類mylegend中,圖例的初始化利用該類的默認(rèn)構(gòu)造函數(shù)實(shí)現(xiàn),構(gòu)造函數(shù)執(zhí)行完畢后圖例保存在legendroot節(jié)點(diǎn)中。創(chuàng)建圖例關(guān)鍵代碼如下:

      3.2 圖例的交互

      1)控件定義 采用滑塊控件實(shí)現(xiàn)邊界顏色對(duì)應(yīng)的數(shù)據(jù)值調(diào)節(jié)控制,利用check控件實(shí)現(xiàn)顏色映射方式的動(dòng)態(tài)交互,DialogViz設(shè)置定義在iv文件中,其中滑塊控件的設(shè)置如下:

      2)創(chuàng)建監(jiān)聽(tīng) 創(chuàng)建監(jiān)聽(tīng)的相關(guān)代碼如下:

      3)將控件與監(jiān)聽(tīng)類關(guān)聯(lián) 將控件與監(jiān)聽(tīng)類關(guān)聯(lián)的相關(guān)代碼如下:

      3.3 數(shù)據(jù)映射范圍及方式的動(dòng)態(tài)實(shí)現(xiàn)

      MeshViz提供的第1種數(shù)據(jù)映射方式PredefColorMapping是將每個(gè)屬性值映射到預(yù)定義的顏色范圍的方式,其特點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,無(wú)需用戶干預(yù),缺點(diǎn)是在某些情況下屬性的顏色值分布的不靈活,用戶修改顏色分布的難度大。為了用戶能夠自定義不同的顏色模式以及設(shè)置數(shù)據(jù)體某些屬性的顏色表示方式,可以采用MoLinearColorMapping映射方式,由此實(shí)現(xiàn)一種用戶自定義的圖例范圍及映射方式的動(dòng)態(tài)設(shè)定。筆者在mylegend類中提供一個(gè)供外部模塊調(diào)用的public方法setmapvalue,該方法通過(guò)傳入數(shù)據(jù)范圍參數(shù)min、max來(lái)動(dòng)態(tài)改變數(shù)據(jù)映射范圍,通過(guò)參數(shù)order來(lái)判斷用戶的數(shù)據(jù)映射方式是順序還是倒序,以此來(lái)改變映射方式。該函數(shù)的代碼描述如下:

      動(dòng)態(tài)交互式圖例程序運(yùn)行界面分別如圖1和圖2所示。

      圖1 自定義數(shù)據(jù)范圍順序映射方式圖例

      圖2 自定義數(shù)據(jù)范圍反序映射方式圖例

      4 結(jié) 語(yǔ)

      利用Open Inventor中MeshViz和DialogViz擴(kuò)展模塊實(shí)現(xiàn)動(dòng)態(tài)交互式圖例類,根據(jù)用戶需求可以自定義數(shù)據(jù)映射范圍與映射方式。該方法實(shí)現(xiàn)簡(jiǎn)便,便于用戶直觀理解模型的結(jié)構(gòu)和分析模型特性。此外,由于采用了模塊化的設(shè)計(jì)思想,因而具有較強(qiáng)的擴(kuò)展性,可以方便地與用戶的其他業(yè)務(wù)模塊集成。

      [1]滕貽健,柴山,荊旭,等 .基于Open Inventor的虛擬駕駛仿真系統(tǒng) [J].計(jì)算機(jī)應(yīng)用,2009,29(s1):323-325.

      [2]閻鋒欣,候增選,張定華,等.Open Inventor程序設(shè)計(jì)從入門到精通 [M].北京:清華大學(xué)出版社,2007.

      [3]Wernecke J.The Inventor Mentor:Programming Object-Oriented 3DGraphics with Open Inventor,Release 2 [M].London:Addison-Wesley Publishing Company,1994.

      [4]Ezust A,Ezust P.An Introduction to Design Patterns in C++ with Qt4 [M].New york:Prentice Hall,2006.

      猜你喜歡
      圖例監(jiān)聽(tīng)控件
      圖線、箭頭的含義和圖例
      千元監(jiān)聽(tīng)風(fēng)格Hi-Fi箱新選擇 Summer audio A-401
      找拼圖
      關(guān)于.net控件數(shù)組的探討
      軟件(2018年7期)2018-08-13 09:44:42
      犬狗的畫(huà)法(六)
      老年教育(2018年6期)2018-07-06 08:03:18
      如何讓學(xué)生巧用圖例解決數(shù)學(xué)問(wèn)題
      網(wǎng)絡(luò)監(jiān)聽(tīng)的防范措施
      電子制作(2017年20期)2017-04-26 06:58:02
      應(yīng)召反潛時(shí)無(wú)人機(jī)監(jiān)聽(tīng)航路的規(guī)劃
      局域網(wǎng)監(jiān)聽(tīng)軟件的設(shè)計(jì)
      河南科技(2014年5期)2014-02-27 14:08:21
      就這樣玩會(huì)VBA中常見(jiàn)的自定義控件
      電腦迷(2012年24期)2012-04-29 00:44:03
      扎兰屯市| 酒泉市| 资中县| 龙陵县| 东安县| 寿光市| 绥滨县| 临沭县| 保德县| 布拖县| 响水县| 晋中市| 远安县| 南丹县| 尼勒克县| 昌邑市| 富平县| 贡觉县| 霍林郭勒市| 车险| 布拖县| 如皋市| 寻乌县| 兴城市| 和林格尔县| 皮山县| 牟定县| 信宜市| 嘉荫县| 刚察县| 郧西县| 遂平县| 新平| 桦川县| 麻江县| 岳西县| 交口县| 湘乡市| 凤冈县| 平顶山市| 旌德县|