999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于IDL和.NET的可視化程序設計

2007-12-31 00:00:00闞璦珂朱利東張瑞軍王緒本羅麗萍王成善
計算機應用研究 2007年9期

摘要:介紹了基于IDL和.NET集成的可視化程序設計方法。通過在VB.NET中集成IDLDrawWidget控件,方便、高效地建立了可視化系統原型。實踐表明,在可視化應用領域中,IDL和.NET結合編程實現了優勢互補,具有較高的實用性。

關鍵詞:交互式數據語言; .NET; 可視化; 對象圖形系統

中圖分類號:TP311

文獻標志碼:A

文章編號:1001-3695(2007)09-0149-03

科學計算可視化(visualization in scientific computing)概念提出后,可視化技術作為一門學科得到了長足發展。作為可視化技術的核心,數據可視化技術的應用最為活躍。當前數據可視化的核心研究問題包括三維空間數據場及多元數據的建模、計算及表示技術,面繪制和體繪制的理論與算法,以及在一些專業領域的應用研究等。針對數據可視化的應用需求,可視化軟件平臺也不斷推出,如IDL、AVS/Express開發版、PVWAVE以及CTech等公司的產品[1]。其中,以交互式數據分析和數據可視化為特色的第四代計算機語言——IDL在國內外的應用最為普遍,已被廣泛應用于海洋、氣象、醫學、生物、空間科學、地球科學、天文學和商業開發等各個領域。

IDL既是便捷的軟件工具,也是高效的開發平臺,它擁有強大的編譯環境和與其他語言集成的能力。IDL可以調用其他語言編寫的程序或算法,或從其他語言調用IDL程序,利用ActiveX技術可以將IDL的圖形功能嵌入到其他Windows應用程序中;利用IDLJava Bridge功能可以在IDL代碼中訪問Java對象;通過DLL方式可以在IDL中調用C和Fortran程序;通過鏈接外部程序或將IDL作為其他語言的圖形引擎,可以使IDL成為現有開發工具的有力補充[2]。目前,基于IDL ActiveX控件的多語言混合編程已成為IDL可視化開發的一大趨勢[3~5]。 然而,IDL(Research System Inc.)尚未正式宣稱對微軟公司新一代Windows開發平臺Microsoft.NET的支持,但Microsoft設計了Assembly(程序集)兼容ActiveX的機制,通過封裝ActiveX與控件的交互來實現基于COM的ActiveX控件應用方式,這使得在.NET環境中集成IDL成為可能[6]。

1IDL與.NET的集成

1.1ActiveX控件與.NET的集成機制

.NET提供了對COM和ActiveX組件的互操作機制。.NET應用程序可以調用COM組件,包括ActiveX DLL(本地和DCOM)或ActiveX控件;.NET也可以為.NET組件提供COM接口。因此.NET程序集能夠通過基于COM的應用程序實現雙向訪問。當將COM DLL導入.NET中時,在.NET中創建了一個可以用來引用組件的runtimecallable wrapper(RCW,運行庫可調用的包裝器程序)。RCW提供了在COM組件周圍的一個.NET接口,并委托對ActiveX控件所有方法的調用,而實際上是RCW保存了對COM對象的引用。包裝器類是基于AxHost類的。AxHost類提供了ActiveX控件,使控件好像在ActiveX容器中運行一樣。當控件被添加到開發環境中的工具箱中后,就可以像使用其他預定義控件一樣使用它。默認情況下,為與Windows forms控件相區別,ActiveX控件被加載到窗體中時,其名字均以Ax開始,如AxIDLDrawWidget(IDL ActiveX控件)。由于RCW是一個.NET對象,當不再需要引用對象時,RCW由.NET銷毀,而在.NET包裝器對象終止前COM組件不會被釋放。

1.2IDLDrawWidget控件在.NET中的初始化

IDL的Windows版本提供了稱為IDLDrawWidget的IDL ActiveX控件,該控件提供了在Windows應用程序中以ActiveX組件形式集成IDL的機制,以此來為外部程序提供數據分析和可視化的功能。

當在.NET應用程序中添加IDLDrawWidget控件后,對其進行初始化設置。以VB.NET為例,首先在程序窗體中添加命名為IDLDrawWidget1的IDL ActiveX 控件,然后設置控件的各種屬性。在VB.NET中可通過調用IDLDrawWidget1的ExecuteStr方法實現對IDL的操作。該操作包括兩部分:執行IDL 內部命令、函數或過程;調用自定義的IDL函數或過程。具體程序如下:

1.3IDLDrawWidget控件在.NET中的事件響應機制

當IDLDrawWidget控件嵌入到.NET窗體后,將通過“自動事件(autoevent)”屬性響應用戶的交互操作。它以獨占形式管理用戶的鼠標事件,并在其控件區域內屏蔽了.NET的標準鼠標事件,如MouseUp、MouseDown、MouseMove等。IDL共提供了六個自動事件屬性,包括OnInit、OnExpose、OnButtonPress、OnButtonRelease、OnDblClick和OnMotion。系統設計時需要在IDLDrawWidget控件的屬性欄中依次為自動事件指定用IDL程序編寫的響應過程。其中:OnInit用于設置系統初始化時被自動編譯的IDL項目文件名;OnExpose事件一般在窗體激活或需要強制窗口重畫時發生,在.NET中可通過IDLDrawWidget的DoExpose()方法調用OnExpose屬性指定的響應過程;其余四個事件分別對應發生在控件上的鼠標事件,即OnButtonPress(鼠標按下事件)、OnButtonRelease(鼠標釋放事件)、OnDblClick(鼠標雙擊事件)、OnMotion(鼠標拖拽事件)。

2應用實例

2.1三維可視化系統設計

利用成都金沙遺址的考古地層數據,筆者設計了一個三維可視化系統原型。系統主要目的是對遺址地層的三維空間數據場進行可視化再現,實現地層的三維交互瀏覽和斷面切割,并生成地層空間數據的統計圖。系統總體結構如圖1所示。

a)地層界面數據庫由IDL對地層界線樣點內插建立,通過數據庫接口ADO.NET與系統連接,提供地層體三維建模的基礎數據源。

b)地層體模型由IDL內置的體素模型(voxel)及內插函數進行空間建模后生成,按地層層號劃分層位并渲染。

c)地層交互瀏覽功能在IDLDrawWidget控件中實現,瀏覽場景內嵌在基于VB.NET構建的系統主界面中。

d)地層斷面切割模塊,按照體素的矩陣索引和空間坐標位置對地層進行各方向和各空間卦限的切割,以顯示地層體在不同方向的斷面視圖。

e)空間坐標定位模塊用戶可選擇任意空間坐標記錄(x,y,z),在地層體內部以相應地層的顏色指示其空間位置。

f)空間數據挖掘模塊主要提取了地層的空間幾何特征和空間分布規律。由IDL計算地層面的最大值、最小值、平均值和標準差,地層的體積,以及地層厚度的最大值、最小值、平均值,并得出地層厚度極值(最大值、最小值)出現的空間位置。

g)圖形打印輸出模塊將地層各種形態的三維視圖或統計圖輸出到打印機。

2.2三維可視化功能實現

系統通過IDL 6.2編程實現前六個模塊,打印功能由VB.NET實現。應用程序從VB.NET執行IDL命令驅動IDL過程或函數,并傳遞相關參數,同時,IDLDrawWidget控件接收用戶在系統上交互操作激發的事件,并予以響應。

系統的核心功能為地層的三維建模和斷面切割,主要由IDL的對象圖形系統實現。不同于直接圖形系統(direct graphics system),對象圖形系統采用了面向對象思想,提供了大量的對象類,并支持用戶創建自己的對象類。對象圖形法支持GB級數據的渲染和操作,通過對象圖形法可以實現三維曲面的旋轉和飛行、多光源的陰影或光照處理、觀察實體內部的復雜細節以及從各個不同視角對空間對象進行可視化分析。圖形對象必須按層次結構來創建圖形場景,層次結構用于描述各種圖形對象在類庫中的層次關系,是應用各對象類實現三維可視化的關鍵,如圖2所示。

依據以上層次結構,系統開發過程中創建了下列圖形對象,如圖3所示。

a)oHolder(容器對象),將所有實例化后的對象,如原子圖形對象,添加到容器中,顯示在輸出設備上。

b)oView(視圖對象),將所有實例化后的對象模型添加到視圖。

c)oTrackBall(軌跡球對象),用于用戶在三維場景中使用鼠標對地層體進行交互操作。

d)oMainModel(主體對象),包含IDLgrVolume體對象、IDLgrAxis坐標軸對象、IDLgrText文本對象、IDLgrPloyine構造的盒框對象。

e)oLegendModel(圖例對象),包含IDLgrLegend圖例對象、IDLgrFont字體對象、IDLgrText文本對象。

f)oStatisticModel(統計圖對象),包含IDLgrModel統計圖模型對象、IDLgrPloygon構造的直方圖對象、IDLgrPlot曲線圖對象。

g)oLightModel(光照對象),包含IDLgrModel光照模型對象、IDLgrLight光照對象。

上述圖形對象創建后,依次被添加到IDLDrawWidget控件的圖形窗口中,最后與VB.NET建立的應用程序一起發布。系統運行主窗體如圖4所示。

3結束語

基于IDL與.NET平臺構建的三維可視化系統綜合了兩種開發工具的優勢。IDL面向數組操作的特性使三維建模變得更加容易,同時IDL提供的對象圖形系統使可視化場景的建立也較之基于OpenGL的底層開發更加快捷;而.NET作為主流Windows應用程序開發平臺,對系統界面設計及數據庫操作的支持更加完善。實踐表明,在可視化應用領域中,IDL與.NET結合編程實現了優勢互補,具有較高的實用性。

參考文獻:

[1]闞璦珂. 考古地層的三維可視化及應用研究——以成都金沙遺址為例[D]. 成都:成都理工大學,2006.

[2]IDL 6.2功能介紹白皮書[EB/OL]. [2006-05]. http://www.imagetekinfo.com/Download/.

[3]閻磊,曹俊興. Delphi調用IDL接口混合編程技術研究[J].河北工業大學學報,2005,34(1):85-88.

[4]黃修東,劉立民,曹君渉. VB調用IDL接口混合編程技術[J]. 微型電腦應用,2006,22(2):34-36.

[5]朱玉偉,拾兵,黃勇,等. 基于IDL與VB的遙感數據提取[J]. 計算機應用研究,2006,23(3):181-182,201.

[6]蓋迎春,馮敏,郭建文,等. IDL與.NET環境通信機制研究[J]. 遙感技術與應用,2005,20(3):350-354.

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 亚洲高清免费在线观看| 欧美午夜久久| 亚洲a级在线观看| 久久99蜜桃精品久久久久小说| a色毛片免费视频| 亚洲精品在线影院| 国产精品成| 亚洲国产日韩欧美在线| 国产微拍一区二区三区四区| 久久久久青草大香线综合精品| 这里只有精品免费视频| a毛片在线播放| 色噜噜狠狠色综合网图区| 国产一二三区视频| 九九视频在线免费观看| 欧美亚洲欧美| 无码人中文字幕| 亚洲伊人久久精品影院| 国产00高中生在线播放| 午夜不卡视频| 最新国产精品鲁鲁免费视频| 国国产a国产片免费麻豆| 欧美日韩国产在线播放| 极品尤物av美乳在线观看| 992tv国产人成在线观看| 国产欧美日本在线观看| 91网址在线播放| 特级毛片免费视频| 久久久久国产精品熟女影院| 亚洲成人黄色在线| 97青草最新免费精品视频| 老司机午夜精品网站在线观看| 鲁鲁鲁爽爽爽在线视频观看| 91福利在线观看视频| 欧美精品成人| 国产91特黄特色A级毛片| 国产精品福利在线观看无码卡| 国产欧美专区在线观看| 国产精品观看视频免费完整版| 国产欧美日韩另类| 2022国产91精品久久久久久| 日本成人在线不卡视频| 午夜国产精品视频| 成人在线亚洲| 免费毛片视频| 日韩高清欧美| 最新亚洲人成网站在线观看| 国产激情在线视频| 成人久久精品一区二区三区| 欧美精品亚洲精品日韩专| 国产精品无码一二三视频| 国产av无码日韩av无码网站| 亚洲无码视频一区二区三区| a免费毛片在线播放| 天天色综合4| 欧美日韩国产在线观看一区二区三区 | 色成人亚洲| 亚洲天堂日本| 无码 在线 在线| 朝桐光一区二区| 国产精品久久久久久久伊一| 毛片网站观看| 国产电话自拍伊人| 一级毛片免费的| 中文字幕乱妇无码AV在线| 青青草原国产免费av观看| 国产制服丝袜无码视频| 五月六月伊人狠狠丁香网| 黄色在线不卡| 伊人天堂网| 中文字幕在线观看日本| 亚洲国产日韩在线成人蜜芽| 国产午夜精品一区二区三| 在线免费观看AV| 国产人妖视频一区在线观看| 久久综合干| 日本黄色a视频| 亚洲国产在一区二区三区| www.亚洲色图.com| 精品视频一区在线观看| 国产区网址| 日本一区二区三区精品国产|