亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于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圖軟件接口,允許用戶(hù)通過(guò)搭積木的方式來(lái)構(gòu)建復(fù)雜的三維場(chǎng)景,使得用戶(hù)只需花費(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)類(lèi)型是MoLegend,它能以一個(gè)矩形的方式給出當(dāng)前色譜的彩色圖例,在這個(gè)矩形圖例上可以設(shè)置圖例的名稱(chēng)、最大值與最小值等,同時(shí)利用MoLegend提供的編程接口可以實(shí)現(xiàn)展示形狀、方向、顏色映射類(lèi)型的動(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種類(lèi)型的顏色映射節(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ù)與顏色集合定義了一種線(xiàn)性映射的方式,假設(shè)某個(gè)數(shù)據(jù)v值的在Vk≤v≤Vk+1范圍內(nèi),它對(duì)應(yīng)的顏色Ck取決于(Vk,Ck)和(Vk+1,Ck+1)的線(xiàn)性映射關(guān)系。

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

        4)MoCustomColorMapping節(jié)點(diǎn) 該節(jié)點(diǎn)是一個(gè)實(shí)現(xiàn)了MiColorMapping接口的類(lèi),必須實(shí)現(xiàn)的函數(shù)是getColor(),getColor()的作用是根據(jù)一個(gè)給定的數(shù)值轉(zhuǎn)成SbColorRGBA類(lèi)型的數(shù)值,從而允許用戶(hù)實(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ù)值的類(lèi)型,因此可以使用下列2種方式定義等價(jià)數(shù)值:①定義一個(gè)繼承自PoIsovaluesList類(lèi)的子類(lèi),將該類(lèi)的對(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類(lèi)型的節(jié)點(diǎn),以及從SoDialogGroup派生的SoColumnDialog、SoRowDialog和SoTabDialog類(lèi)型的節(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ǔ)言類(lèi)似的監(jiān)聽(tīng)機(jī)制,DialogViz中提供了一系列預(yù)定義的監(jiān)聽(tīng)類(lèi),通過(guò)監(jiān)聽(tīng)類(lèi)就可以完成用戶(hù)事件的交互響應(yīng)。建立一個(gè)監(jiān)聽(tīng)的步驟如下:①定義一個(gè)從預(yù)定義DialogViz接口類(lèi)派生的監(jiān)聽(tīng)類(lèi);②在定義的監(jiān)聽(tīng)類(lèi)中覆蓋父類(lèi)的虛函數(shù),如dialogPushButton()、dialogCheckBox()、menuRadioButtons()等函數(shù);③將監(jiān)聽(tīng)類(lèi)添加到場(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類(lèi)型數(shù)據(jù)映射對(duì)象并與圖例節(jié)點(diǎn)關(guān)聯(lián);③在場(chǎng)景中插入PoIsovaluesList類(lèi)型等價(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類(lèi)節(jié)點(diǎn)圖例指定數(shù)值范圍;⑤將圖例節(jié)點(diǎn)添加到場(chǎng)景中。

        采用模塊化程序設(shè)計(jì)思想,為方便其他模塊調(diào)用[4],筆者將動(dòng)態(tài)交互圖例封裝在一個(gè)類(lèi)mylegend中,圖例的初始化利用該類(lèi)的默認(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)類(lèi)關(guān)聯(lián) 將控件與監(jiān)聽(tīng)類(lèi)關(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ú)需用戶(hù)干預(yù),缺點(diǎn)是在某些情況下屬性的顏色值分布的不靈活,用戶(hù)修改顏色分布的難度大。為了用戶(hù)能夠自定義不同的顏色模式以及設(shè)置數(shù)據(jù)體某些屬性的顏色表示方式,可以采用MoLinearColorMapping映射方式,由此實(shí)現(xiàn)一種用戶(hù)自定義的圖例范圍及映射方式的動(dòng)態(tài)設(shè)定。筆者在mylegend類(lèi)中提供一個(gè)供外部模塊調(diào)用的public方法setmapvalue,該方法通過(guò)傳入數(shù)據(jù)范圍參數(shù)min、max來(lái)動(dòng)態(tài)改變數(shù)據(jù)映射范圍,通過(guò)參數(shù)order來(lái)判斷用戶(hù)的數(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)交互式圖例類(lèi),根據(jù)用戶(hù)需求可以自定義數(shù)據(jù)映射范圍與映射方式。該方法實(shí)現(xiàn)簡(jiǎn)便,便于用戶(hù)直觀理解模型的結(jié)構(gòu)和分析模型特性。此外,由于采用了模塊化的設(shè)計(jì)思想,因而具有較強(qiáng)的擴(kuò)展性,可以方便地與用戶(hù)的其他業(yè)務(wù)模塊集成。

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

        [2]閻鋒欣,候增選,張定華,等.Open Inventor程序設(shè)計(jì)從入門(mén)到精通 [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)控件
        圖線(xiàn)、箭頭的含義和圖例
        千元監(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
        国产成人av片在线观看| 亚洲韩日av中文字幕| 国产黄久色一区2区三区| 亚洲αv在线精品糸列| 黄瓜视频在线观看| 国产在线美女| 国产人妖一区二区在线| 熟女一区二区国产精品| 国产av无码专区亚洲a∨毛片| 国产莉萝无码av在线播放| 推油少妇久久99久久99久久| 欧美亚洲日韩国产人成在线播放| 亚洲综合国产精品一区二区| 国产一品二品三品精品在线| 亚洲中文字幕成人无码| 免费做爰猛烈吃奶摸视频在线观看| 无码精品国产午夜| 街拍丝袜美腿美女一区| 久久天天躁夜夜躁狠狠85麻豆| 2021国产精品国产精华| 国产片AV在线永久免费观看| 亚洲视频不卡免费在线| 蜜臀av一区二区三区久久| 国内最真实的xxxx人伦| 亚洲国产精品久久久久秋霞1| aⅴ色综合久久天堂av色综合| 天堂一区二区三区精品| 欧美亚洲一区二区三区| 日本japanese少妇高清| 99综合精品久久| 久久婷婷综合激情亚洲狠狠| 天天综合网网欲色| 亚洲精品无码久久久久久| 蜜桃在线播放免费一区二区三区| 91久久国产露脸国语对白| 欧美a级毛欧美1级a大片| 国产麻传媒精品国产av| 国产精品福利小视频| 精品国模人妻视频网站| 亚洲综合国产成人丁香五月激情 | 国产真人无遮挡作爱免费视频|