A. vc編程界面怎樣調用MATLAB擬合的三維圖像並顯示
VC只能調用matlab的引擎,然後使用matlab引擎畫圖,實質上是用vc給matlab命令然後讓matlab自己去執行
lz問題解決方法:
1.
調用引擎,讓matlab自己去畫圖顯示
2.
調用引擎,用matlab進行擬合,然後自己用vc來畫圖像
B. 實驗二十二 三維遙感制圖
一、實驗目的
通過運用ENVI軟體的3D Surface View功能將二維遙感影像模擬顯示為具有立體感的三維透視遙感圖的實驗操作,增強對三維遙感影像圖的形態特徵和運用價值的了解,掌握製作三維遙感圖的方法。
二、實驗內容
①R(TM5)、G(TM4)、B(TM 3)假彩色合成影像圖製作;②運用ENVI軟體的3D SurfaceView功能和DEM 數據製作三維衛星遙感影像;③三維衛星遙感影像應用分析。
三、實驗要求
①實驗前准備好與待作三維顯示的遙感影像完全空間匹配的DEM 數據;②通過變化成圖參數對三維遙感影像進行不同視角的互動式瀏覽觀察;③掌握製作單波段灰階三維遙感影像和彩色三維遙感影像ENVI的操作方法;④編寫實驗報告。
四、技術條件
①微型計算機;②國際分幅127-43 TM 影像數據;③與127-43 TM 影像對應的1:50000 DEM數據;④ENVI軟體(ver.4.0以上);⑤ACDSee軟體(ver.6.0以上)。
五、實驗步驟
(1)在ENVI主菜單欄中選擇「File>Open Image File」,出現文件目錄窗口,分別將127-43 TM 影像數據和對應的DEM數據調入「Available Bands List」窗口,並使127-43 TM 影像數據以RGB(B5B4B3)方式顯示到「Display」中。
(2)在ENVI主菜單欄中選擇「Topographic>3D SurafceView」,在「Associated DEM Input File」對話框中選擇DEM數據,點擊【OK】按鈕確定,打開「3D SurafceView Input Parameters」對話框(圖22-1)。
(3)在「3D SurfaceView Input Parameters」對話框中,設置以下參數:
DEM Resolution(DEM解析度):可以根據實際需求選擇不同的解析度,DEM 將按照所選擇的解析度被重采樣。使用較高解析度會減慢可視化速度;
圖22-1 三維可視化輸入參數設置
Resampling(重采樣方法):ENVI提供「Nearest Neighbor」(最鄰近)和「Aggregate」(集合)兩種重采樣方法;
DEM min plot value和DEM max plot value(DEM最小和最大值范圍):從DEM數據中選取滿足特定需要的數據值,低於最小值和高於最大值的DEM 值,將不被繪制在三維場景中;
Vertical Exaggeration(垂直放大系數):輸入的值將使得垂直方向真正放大。值越高,放大越多;
lmage Resolution(圖像紋理解析度):選擇「Ful」l(原始大小)或「Other」(設定值)圖像解析度,若選擇「Other」,圖像將按輸入的像元數被重采樣,並提示選擇重采樣方法。
(4)設置好上述參數後,點擊【OK】按鈕,創建三維場景,如圖22-2所示。
在「3D SurfaceView」窗口中,可以保存三維場景為圖像文件(File>Save Surface As),也可以選擇「Options」選項對三維場景背景進行更改、添加或移除矢量文件等。
(5)互動式三維場景瀏覽:可以通過滑鼠控制旋轉、平移及縮放三維曲面。
◎點擊並拖放滑鼠左鍵旋轉X -Y平面,雙擊滑鼠左鍵能夠定位到顯示窗口內的像元;
◎點擊並拖放滑鼠中鍵可以平移圖像;
◎點擊並向右拖放滑鼠右鍵可以放大三維場景;
◎點擊並向左拖放滑鼠右鍵可以縮小三維場景。
圖22-2 127-43幅TM影像3D透視圖
六、實驗報告
(1)簡述實驗過程。
(2)回答問題:①製作遙感三維影像圖需要哪些數據?對這些數據有何要求?②遙感三維影像圖實際有四維信息,是哪四維信息?③遙感影像三維可視化技術在實際地質工作中有何用途?
實驗報告格式見附錄一。
C. matlab繪制三維圖像,如何寫代碼呢
先求兩個曲面相交曲線
D. 3D技術融入了哪些前沿科技
3D技術是推進工業化與信息化「兩化」融合的發動機,是促進產業升級和自主創新的推動力,是工業界與文化創意產業廣泛應用的基礎性、戰略性工具技術,嵌入到了現代工業與文化創意產業的整個流程,包括工業設計、工程設計、模具設計、數控編程、模擬分析、虛擬現實、展覽展示、影視動漫、地產宣傳片、3D立體畫、電子樓書、教育訓練等,是各國爭奪行業至高點的競爭焦點。
經過多年的快速發展與廣泛應用,當前3D技術得到了顯著的成熟與普及;一個以3D取代2D、「立體」取代「平面」、「虛擬」模擬「現實」的3D浪朝正在各個領域迅猛掀起。
3D技術的應用普及,有面向影視動畫、動漫、游戲等視覺表現類的文化藝術類產品的開發和製作,有面向汽車、飛機、家電、傢具等實物物質產品的設計和生產,也有面向人與環境交互的虛擬現實的模擬和摸擬等。具體講包括:3D軟體行業、3D硬體行業、數字娛樂行業、 製造業、 建築業、 虛擬現實、地理信息GIS、3D互聯網等等。
統計表明,在現代工業產品開發生產過程中,70%錯誤在設計階段已經產生,而80%的錯誤往往在生產或是更後續的階段才被發現並進行修正。3D的突出優勢在於能最大化的對產品進行模擬設計和用戶溝通,盡可能早地將錯誤和需求變更解決在設計階段,使產品開發周期縮短、生產成本降低,提升企業市場競爭優勢。
在西方發達國家,3D已成為產品設計、製造、管理、市場、服務、消費等的創新基礎和新的競爭高地,而掌握最前沿3D技術,也為他們把控產業鏈、獲取巨額利潤提供了依託。當前全球近80%的飛機與50%的汽車都是使用法國達索系統的3D軟體設計製造,歐特克更是在3D數字娛樂等眾多領域引領全球創新走向。
欲善其事,先利其器。作為信息化條件下新的基本「語言」、「工具」和「平台」,3D技術的研發與應用關系著中國產業結構的提升,以及在下一波世界競爭中占據怎樣的位置。沒有3D技術與人才的支撐,產業升級、自主創新、文化軟實力打造等將無從做起,「中國創造」將成為一句空話。把3D技術滲透到工業化與信息化「兩化融合」的實踐中,滲透到文化創意產業創新發展的實踐中,滲透到新一代創新型實用人才培養的實踐中,滲透到持續推動自主創新的進程中,不僅是技術能力建設,更是國家創新能力與文化軟實力建設上台階的重要基礎。
3D列印技術,是以計算機三維設計模型為藍本,通過軟體分層離散和數控成型系統,利用激光束、熱熔噴嘴等方式將金屬粉末、陶瓷粉末、塑料、細胞組織等特殊材料進行逐層堆積黏結,最終疊加成型,製造出實體產品。與傳統製造業通過模具、車銑等機械加工方式對原材料進行定型、切削以最終生產成品不同,3D列印將三維實體變為若干個二維平面,通過對材料處理並逐層疊加進行生產,大大降低了製造的復雜度。這種數字化製造模式不需要復雜的工藝、不需要龐大的機床、不需要眾多的人力,直接從計算機圖形數據中便可生成任何形狀的零件,使生產製造得以向更廣的生產人群范圍延伸。
立體印刷品具有圖片新穎,極強的視覺沖擊力等特點,從而達到醒目且過目不忘的效果;是當前一種圖像表現形式。本產品是一種印刷品的延伸品,因而凡印刷品適用的范圍,本產品勻適用;同時又具有廣告和防偽功效。
立體眼鏡不僅僅用於觀看3D電影,還有非常刺激的3D游戲,很多游戲開發商所製作出的大型3D游戲需要的立體眼鏡和我們平時看一些普通的3D電影的眼鏡是不一樣的,這種立體眼鏡的技術原理要復雜的多。
用於PC顯卡的3D眼鏡必須要有適配的顯示器和處理器才行,所以這樣的立體眼鏡不僅是價格不菲,技術也很到位,對於普通人(只看看電影的)來說非專業的3D 游戲玩家或者愛好者,這樣的裝備用不到的。
3D全息投影是一種利用干涉和衍射原理記錄並再現物體真實的三維圖像,是一種無需配戴眼鏡的3D技術,觀眾可以看到立體的虛擬人物。這項技術在一些博物館應用較多。3S動漫正是以這種全新的事物改變著人們對那些傳統舞台的聲光電技術的審美態度。適用范圍產品展覽、汽車服裝發布會、舞台節目、互動、酒吧娛樂、場所互動投影等。3D全息立體投影設備不是利用數碼技術實現的,而是投影設備將不同角度影像投影至進口的MP全息投影膜上,讓你看不到不屬於你自身角度的其他圖像,因而實現了真正的3D全息立體影像。
3D游戲就是三維游戲,既是在游戲中使用3D模型來製作人物、場景等物體。使玩家可以在游戲中體會到長寬高三種度量,讓玩家可以360度旋轉視角,從各個角度來進行游戲。這大大增加的游戲的自由度、趣味度及真實性。目前3D游戲已經成為了時下最主流的游戲類型。當前也出現了一種2D+3D的偽3D,也被成為2.5D的技術,其實就是通過2D與3D技術的結合來滿足不同需求的客戶。但由於3D模型的面數及復雜程度等問題,3D游戲對於顯卡運算能力要求遠遠高於2D游戲。因此很多3D游戲都需要較高配置的獨立顯卡來完成流程精彩的3D游戲體驗。此外在畫面的精細度方面也較2D游戲有所欠缺。
E. 三維圖形可視化製作技術
(一)OpenGL
OpenGL(Open Graphics Libaray)由SGI公司為其圖形工作站開發的可以獨立於窗口操作和硬體環境的圖形開發系統。其目的是將用戶從具體的硬體和操作系統中解放出來。用此系統可以不去理解這些系統的結構和指令系統,只要按規定的格式書寫應用程序就可以在任何支持該語言的硬體平台上執行。由於OpenGL的高度可重用性,已經有幾十家大公司表示接受OpenGL作為標准軟體介面,目前加入OpenGL ARB(OpenGL體系結構審查委員會)的成員有SGI公司、HP公司、MicroSoft公司、Intel公司、IBM公司、SUN公司、DEC公司、AT&T公司的Unix軟體實驗室等。在該組織的努力下,OpenGL已經成為高性能圖形和互動式視景處理的工業標准,能夠在Windows95/98、Windows NT、Windows 2K、Macos、Beos、OS/2以及Unix上應用。OpenGL的實質是作為圖形硬體的軟體介面,是一組三維的API函數。
1.OpenGL的主要功能
(1)建模。不但有簡單的點線面還提供了復雜的三維物體(球、錐等)以及復雜的曲線曲面(Bezier、Nurbs等)繪制函數。
(2)變換。主要包括基本變換(平移、旋轉等)和投影變換(平行、透視投影等)。
(3)顏色模式設置。RGBA模式、ColorIndex顏色索引。
(4)光照和材質設置。OpenGL光有輻射光、環境光、漫反射光、鏡面光;材質是用光反射率來表示的。場景中物體最終反映到人眼的顏色是光的RGB分量和材質的RGB分量疊加形成的。
(5)紋理映射。主要表達物體表面的細節。
(6)點陣圖顯示和圖像增強。圖像功能除了基本的復制和圖像像素讀寫外,還提供融合(Blending)、反走樣(Antialiasing)、霧化(Fog)等特殊的圖像處理效果。
(7)雙緩沖(Double Buffering)動畫。雙緩沖即前台緩沖和後台緩沖。後台計算場景、產生畫面,前台顯示後台已經計算好的畫面。
(8)交互技術。主要是提供三種工作模式:繪圖模式、選擇模式和反饋模式。繪圖模式完成場景的繪制,可以藉助物體的幾何參數及運動控制參數、場景的觀察參數、光照參數和材質參數、紋理參數、OpenGL函數的眾多常量控制參數、時間參數等和Windows對話框、菜單、外部設備等構成實時交互的程序系統。在選擇模式下,則可以對物體進行命名,選擇命名的物體,控制對命名的物體的繪制。而反饋模式則給程序設計提供了程序運行的信息,這些信息也可反饋給用戶,告訴用戶程序的運行狀況和監視程序的運行進程。
(9)其他。利用OpenGL還能實現深度暗示(Depth Cue)、運動模糊(Motion Blur)等特殊效果。
2.OpenGL的基本原理
OpenGL是一個硬體發生器的軟體介面,其主要目的是將二維、三維物體繪制到一個幀緩沖里,它包括幾百個圖形函數。開發者主要利用這些函數來建立三維模型和進行三維實時交互。
(1)圖元操作和指令。OpenGL能夠從多種可選擇的模式畫圖元,而且一種模式的設置一般不會影響其他模式的設置,無論發生深墨情況,指令總是被順序處理,也就是說,一個圖元必須完全畫完之後,後繼圖元才能影響幀存。
(2)圖形控制。OpenGL提供諸如變換矩陣、光照、反走樣方法、像素操作等參數來控制二維和三維圖形的繪制。它並不提供一個描述或建立復雜幾何物體的手段。OpenGL提供的是怎樣畫復雜物體的機制而非描繪復雜物體本身的面面俱到的工具。即OpenGL是過程性的而非描述性的。
(3)執行模式。OpenGL命令的解釋模式是客戶/伺服器模式的,即由客戶發布命令,命令由OpenGL伺服器(解釋器)來處理,伺服器可以運行在相同的或不同的計算機上,基於這一點,OpenGL是網路透明的。
地下水三維可視化系統開發與應用
3.OpenGL的命令語法與狀態
基於OpenGL標准開發的微機應用程序必須在32位Windows平台下,如Windows98/NT環境,運行時所需的動態連接庫為OpenGL32.DLL、Glu32.DLL。OpenGL包含100多個庫函數,這些函數按一定的格式來命名。
(1)核心函數115個,每個函數以gl開頭,這些函數是最基本的,可以運行在任何工作平台上。這些函數創建二維和三維幾何形體,設置視點,建立視覺體,設置顏色及材質,建立燈光,進行紋理映射,反走樣,處理融合,霧化場景等,它們可以接受不同的參數,因而可派生300多個函數。
(2)OpenGL實用庫函數以glu開頭,共43個。這些函數基於OpenGL核心函數,主要提供對輔助函數的支持,並且執行了核心OpenGL函數的交互,因而是比核心函數更高一層的函數,也更有通用性。可以運行在任何OpenGL工作平台上。
(3)輔助庫函數,共31個。以aux開頭,它們是一類特殊的OpenGL函數,是幫助初學者盡快進入OpenGL編程而做簡單練慣用的。因此並不能在所有平台上運行。但Windows98/NT支持它們。
(4)Windows專用庫函數,以wgl開頭。主要是連接OpenGL和Windows窗口系統的,用它們可以管理著色描述表及顯示列表,擴展功能,管理字體點陣圖等。
(5)Win32 API函數,共6個,用於處理像素格式及緩沖。
(6)OpenGL結構,共4個。
4.OpenGL圖形操作步驟
步驟1:設置像素格式:主要包括建立OpenGL繪制風格、顏色模式、顏色位數、深度位數等;
步驟2:建立模型:建立三維模型;
步驟3:舞檯布景:如何把景物放置在三維空間的適當位置,設置三維透視視覺體以觀察場景;
步驟4:效果處理:設置物體的材質(顏色、光學性能及紋理映射等)加入光照及光照條件;
步驟5:光柵化:把景物及其顏色信息轉化為可在計算機上顯示的像素信息。
(二)VRML
1.VRML簡介
VRML是英文Virtual Reality Modeling Language——虛擬現實造型語言的縮寫。其最初的名字叫Virtual Reality Makeup Language。名字是由第一屆WWW(1994,日內瓦)大會上,由Tim Berners Lee和Dave Raggett所組織的一個名為Bird-of-a-Feather(BOF)小組提出的。後來Makeup改為Modeling。VRML和HTML是緊密相連的,是HTML在3D領域的模擬和擴展。由於VRML在Internet具有良好的模擬性和交互性,因而顯示出強大的生命力。
VRML是一種3D交換格式,它定義了當今3D應用中的絕大多數常見概念,諸如變換層級、光源、視點、幾何、動畫、霧、材質屬性和紋理映射等。VRML的基本目標是確保能夠成為一種有效的3D文件交換格式。
VRML是HTML的3D模型。它把互動式三維能力帶入了萬維網,即VRML是一種可以發布3D網頁的跨平台語言。事實上,三維提供了一種更自然的體驗方式,例如游戲、工程和科學可視化、教育和建築。諸如此類的典型項目僅靠基於網頁的文本和圖像是不夠的,而需要增強交互性、動態效果連續感以及用戶的參與探索,這正是VRML的目標。
VRML提供的技術能夠把三維、二維、文本和多媒體集成為統一的整體。當把這些媒體類型和腳本描述語言(scripting language)以及網際網路的功能結合在一起時,就可能產生一種全新的互動式應用。VRML在支持經典二維桌面模型的同時,把它擴展到更廣闊的時空背景中。
VRML是賽博空間(cyber space)的基礎。賽博空間的概念是由科幻作家William Gibson提出的。雖然VRML沒有為真正的用戶模擬定義必要的網路和資料庫協議,但是應該看到VRML迅速發展的步伐。作為標准,它必須保持簡單性和可實現性,並在此前提下鼓勵前沿性的試驗和擴展。
2.VRML的基本工作原理及其特性
(1)用文本信息描述三維場景。在Internet網上傳輸,在本地機上由VRML的瀏覽器解釋生成三維場景,解釋生成的標准規范即是VRML規范。正是基於VRML的這種工作機制,才使其可能在網路應用中有很快的發展。當初VRML的設計者們考慮的也正是文本描述的信息在網路上的傳輸比圖形文件迅速,所以他們避開在網路上直接傳輸圖形文件而改用傳輸圖形文件的文本描述信息,把復雜的處理任務交給本地機從而減輕了網路的負荷。
(2)統分結合模式。VRML的訪問方式基於C/S模式,其中伺服器提供VRML文件,客戶通過網路下載希望訪問的文件,並通過本地平台的瀏覽器(Viewer)對該文件描述的VR世界進行訪問,即VRML文件包含了VR世界的邏輯結構信息,瀏覽器根據這些信息實現許多VR功能。這種由伺服器提供統一的描述信息,客戶機各自建立VR世界的訪問方式被稱為統分結合模式,也是VRML的基本概念。由於瀏覽器是本地平台提供的,從而實現了VR的平台無關性。
(3)基於ASCII碼的低帶寬可行性。VRML像HTML一樣,用ASCII文本格式來描述世界和鏈接,保證在各種平台上通用,同時也降低了數據量,從而在低帶寬的網路上也可以實現。
(4)實時3D著色引擎。傳統的VR中使用的實時3D著色引擎在VRML中得到了更好的體現。這一特性把VR的建模與實時訪問更明確地隔離開來,也是VR不同於三維建模和動畫的地方。後者預先著色,因而不能提供交互性。VRML提供了6+1個自由度,即三個方向的移動和旋轉,以及和其他3D空間的超鏈接(Anchor)。
(5)可擴充性。VRML作為一種標准,不可能滿足所有應用的需要。有的應用希望交互性更強,有的希望畫面質量更高,有的希望VR世界更復雜。這些要求往往是相互制約的,同時又受到用戶平台硬體性能的制約,因而VRML是可擴充的,即可以根據需要定義自己的對象及其屬性,並通過Java語言等方式使瀏覽器可以解釋這種對象及其行為。
(三)X3D
X3D(Extensible 3D——可擴展3D)是一個軟體標准,定義了如何在多媒體中整合基於網路傳播的交互三維內容。X3D將可以在不同的硬體設備中使用,並可用於不同的應用領域中。比如工程設計、科學可視化、多媒體再現、娛樂、教育、網頁、共享虛擬世界等方面。X3D也致力於建立一個3D圖形與多媒體的統一的交換格式。X3D是VRML的繼承。VRML(Virtual Reality Modeling Language-虛擬現實建模語言)是原來的網路3D圖形的ISO標准(ISO/IEC 14772)。X3D相對VRML有了改進,提供了以下的新特性:更先進的應用程序界面,新添的數據編碼格式,嚴格的一致性,組件化結構(用來允許模塊化的支持標準的各部分)。
1.X3D設計目標
X3D確立了以下的設計目標:
(1)分離數據編碼和運行時間結構;
(2)支持大量的數據編碼格式,包括XML(Extensible Markup Language);
(3)增加新的繪圖對象、行為對象、交互對象;
(4)給3D場景提供可選的應用程序界面(APIs);
(5)定義規格的子集「概貌(Profiles)」以適合不同的市場需要;
(6)允許在不同層次(1evels)的服務上都能實現X3D規格;
(7)盡可能添加完善規格中行為的定義或描述。
2.X3D特性
為了滿足工程設計、科學可視化、多媒體再現、娛樂、教育、網頁、共享虛擬世界等方面使用的需要,X3D添加了以下的新特性:
(1)3D圖形:多邊形化幾何體、參數化幾何體、變換層級、光照、材質、多通道/多進程紋理帖圖;
(2)2D圖形:在3D變換層級中顯示文本、2D矢量、平面圖形;
(3)動畫:計時器和插值器驅動的連續動畫;人性化動畫和變形;
(4)空間化的音頻和視頻:在場景幾何體上映射視聽源;
(5)用戶交互:基於滑鼠的選取和拖曳;鍵盤輸入;
(6)導航:攝像機;用戶在3D場景中的移動;碰撞、接近和可見性檢測;
(7)用戶定義對象:通過創建用戶定義的數據類型,可以擴展瀏覽器的功能;
(8)腳本:通過程序或腳本語言,可以動態地改變場景;
(9)網路:可以用網路上的資源組成一個單一的X3D場景;可以通過超鏈接對象連接到其他場景或網路上的其他資源;
(10)物理模擬:人性化動畫;地理化數據集;分布交互模擬(Distributed Interactive Simulation-DIS)協議整合。
(四)Java 3D
Java 3D用其自己定義的場景圖和觀察模式等技術構造了3D的上層結構,實現了在Java平台使用三維技術。Java 3D API是Sun定義的用於實現3D顯示的介面。3D技術是底層的顯示技術,Java 3D提供了基於Java的上層介面。Java 3D把OpenGL和DirectX這些底層技術包裝在Java介面中。這種全新的設計使3D技術變得不再繁瑣並且可以加入到J2SE、J2EE的整套架構,這些特性保證了Java 3D技術強大的擴展性。Java 3D建立在Java2(Java1.2)基礎之上,Java語言的簡單性使Java 3D的推廣有了可能。Java 3D是在OpenGL的基礎上發展起來的,可以說是Java語言在三維圖形領域的擴展,其實質是一組API即應用程序介面。利用Java 3D所提供的API就可以編寫出一些諸如三維動畫、遠程三維教學軟體、三維輔助設計分析和模擬軟體,以及三維游戲等。它實現了以下三維功能:
(1)生成簡單或復雜的形體(也可以調用現有的三維形體);
(2)使形體具有顏色、透明效果、貼圖;
(3)在三維環境中生成燈光、移動燈光;
(4)具有行為的處理判斷能力(鍵盤、滑鼠、定時等);
(5)生成霧、背景、聲音;
(6)使形體變形、移動、生成三維動畫;
(7)編寫非常復雜的應用程序,用於各種領域如VR(虛擬現實)。
1.Java 3D的數據結構
Java 3D的數據結構和OpenGL的數據結構一樣,採用的是場景圖的數據結構,但Java 3D根據Java語言的特點。Java 3D的場景圖是DAG(Directed-acyclic Graph),其特點是具有方向的不對稱性。Java 3D的場景圖由Java 3D的運行環境直接轉變成具有三維顯示效果的顯示內存數據,從而在計算機上顯示出三維效果,顯示內存中不斷接收Java 3D的運行最新結果,從而產生三維動畫。
2.、Java 3D(API)中的類
Java 3D是根據OpenGL的三維圖形庫及VRML的基礎上開發出來的一個API,裡麵包含了幾乎所有編寫Java互動式三維應用程序所需的最基本的類(類方法)、介面。主要存放在程序包Javax.media.j3d中,這些是Java 3D的核心類。另外,還有提供一個有助於快速編程的應用類型的包(Utility包)com.sun.j3d.utils(可或缺,主要是能大大地提高程序的編寫效率)。除了核心類和Utility包之外,還有:
(1)Java.awt(主要是定義一個顯示用的窗口);
(2)Javax.vecmath(主要是處理定義的矢量計算所用的類,今後核心類);
(3)Java 3D的類根據作用可分為Node、NodeComponent,其中Node又分為Group及Leaf兩個子類。
(五)IDL
1.IDL簡介
IDL(Interactive Data Language)是美國RSI公司(Research System Inc)的產品,它集可視、交互分析、大型商業開發為一體,為用戶提供了完善、靈活、有效的開發環境。IDL的主要特性包括:
(1)高級圖像處理、互動式二維和三維圖形技術、面向對象的編程方式、OpenGL圖形加速、跨平台圖形用戶界面工具包、可連接ODBC兼容資料庫及多種程序連接工具等。
(2)IDL是完全面向矩陣的,因此具有處理較大規模數據的能力。IDL可以讀取或輸出有格式或無格式的數據類型,支持通用文本及圖像數據,並且支持在NASA,TPT,NOAA等機構中大量使用的HDF,CDF及netCDF等科學數據格式及醫學掃描設備的標准格式DICOM格式。IDL還支持字元、位元組、16位整型、長整型、浮點、雙精度、復數等多種數據類型。能夠處理大於2Gb的數據文件。IDL採用OpenGL技術,支持OpenGL軟體或硬體加速,可加速互動式的2D及3D數據分析、圖像處理及可視化。可以實現曲面的旋轉和飛行;用多光源進行陰影或照明處理;可觀察體(Volume)內部復雜的細節;一旦創建對象後,可從各個不同的視角對對象進行可視分析。
(3)IDL具有圖像處理軟體包,例如感興趣區(ROI)分析及一整套圖像分析工具、地圖投影及轉換軟體包,宜於GIS的開發。
(4)IDL帶有數學分析和統計軟體包,提供科學計算模型。可進行曲線和曲面擬合分析、多維網格化和插值、線性和非線性系統等分析。
(5)用IDL DataMiner可快速訪問、查詢並管理與ODBC兼容的資料庫,支持Oracle,Informix,Sybase,MS SQL等資料庫。可以創建、刪除、查詢表格,執行任意的SQL命令。
(6)IDL可以通過ActiveX控制項將IDL應用開發集成到與COM兼容的環境中。用Vi-sual Basic,Visual C++等訪問IDL,還可以通過動態連接庫方式從IDL調用C,Fortran程序或從其他語言調用IDL。
(7)用IDL GUIBuilder可以開發跨平台的用戶圖形界面(GUI),用戶可以拖放式建立圖形用戶界面GUI,靈活、快速地產生應用程序的界面。
(8)IDL為用戶提供了一些可視數據分析的解決方案,早在1982年NASA的火星飛越航空器的開發就使用了IDL軟體。
2.IDL的編程方式
IDL有兩種編程方式,一是利用IDL平台的GUIBuilder進行編程,這種方式的特點是所見即所得,使用IDL自身所具有的控制項進行編程和界面設置,但使用靈活性不夠;另一種是利用IDL平台的集成開發環境的組件編程技術,這種方式的特點是較為靈活,而且功能較強,可以隨著編程者的意願進行設置。另外在IDL中有批處理文件語句,即在命令行中直接輸入命令語句來進行數據的讀入和輸出,以及進行屬性設置和處理。此外,IDL提供IDLDRAW WIDGET控制項,可進行基於COM技術的開發。
3.IDL的應用領域
由於其強大的功能和獨特的特點,IDL語言可以應用地球科學(包括氣象、水文、海洋、土壤、地質、地下水等)、醫學影像、圖像處理、GIS系統、軟體開發、大學教學、實驗室、測試技術、天文、航空航天、信號處理、防禦工程、數學統計及分析、環境工程等很多領域,IDL語言都可以得到廣泛的應用。目前應用IDL語言,已經開發出了ENVI,IMAGIS,RiverTools,醫學等成熟產品。具體的應用實例也非常多,如在2000年澳大利亞悉尼奧運會綜合預報系統、美國國家環境衛星數據和信息服務中心的厄爾尼諾現象分析等工作中得到了成功的應用。
北京市勘察設計研究院應用IDL語言,已開發了真三維地質分析系統AutoDig,能夠直接對簡單的地質數據,或其他帶層次性的數據實現科學的、完整的三維建模;同時也提供真三維顯示功能,不僅能對三維體實現任意的旋轉、放大、縮小,而且也能實現互動式的真三維切割功能。
(六)小結
三維圖形技術是隨著計算機軟硬體技術的發展而發展變化的,其鼻祖是SGI公司推出的OpenGL三維圖形庫。OpenGL是業界最為流行也是支持最廣泛的一個底層3D技術,幾乎所有的顯卡廠商都在底層實現了對OpenGL的支持和優化。OpenGL同時也定義了一系列介面用於編程實現三維應用程序,但是這些介面使用C(C++)語言實現並且很復雜。掌握針對OpenGL的編程技術需要花費大量時間精力。
Java 3D是在OpenGL的基礎上發展起來的,可以說是Java語言在三維圖形領域的擴展,其實質是一組API即應用程序介面。
Direct3D是Microsoft公司推出的三維圖形編程API,它主要應用於三維游戲的編程。眾多優秀的三維游戲都是由這個介面實現的。與OpenGL一樣,Direct3D的實現主要使用C++語言。
VRML2.0(VRML97)自1997年12月正式成為國際標准之後,在網路上得到了廣泛的應用,這是一種比BASIC,JAVASCRIPT等還要簡單的語言。現已發展為X3D。腳本化的語句可以編寫三維動畫片、三維游戲、計算機三維輔助教學。它最大的優勢在於可以嵌在網頁中顯示。
美國RSI公司(Research System Inc)研製和開發的最新可視軟體IDL(Interactive Data Language)互動式數據語言,是進行數據分析、可視化和跨平台應用開發的較佳選擇,它集可視、交互分析、大型商業開發為一體,為用戶提供了完善、靈活、有效的開發環境。三維技術的比較見表1-2。
表1-2 三維技術對比
F. 用matlab畫三維圖像
對於多個曲面圍成封閉區域的問題,似乎沒有通用的好方法,只能具體問題具體分析。
由前兩個方程可以求得,封閉區間的x范圍是-1~2,y范圍是0~4,如圖所示:
更好的做法應該是計算出各曲面相交的曲線,然後用patch來實現,但做起來還要花不少時間,就先這樣吧。
G. 想用MATLAB畫出下面函數的三維圖像,求大神幫忙編寫程序!!
不好意思,是我之前給你的答案中有筆誤,把z的表達式中第二個sin函數中的x改為y,另外x,y區間取到0,1就可以了。
fz=@(x,y,m,n,Lx,Ly)2/sqrt(Lx*Ly)*sin(m*pi*x/Lx).*sin(n*pi*y/Ly);
[x,y]=meshgrid([0:0.02:1]);
subplot(1,3,1);
mesh(x,y,fz(x,y,1,1,1,1));
subplot(1,3,2);
mesh(x,y,fz(x,y,1,2,1,1));
subplot(1,3,3);
mesh(x,y,fz(x,y,1,3,1,1));
H. 使用Matlab繪制三維圖像步驟 不要敷衍 如果可以 請繪制Rosenbrock函數
把這個文件存到一個createfigure.m文件中,運行一下就行了。這個注釋挺全的吧?而且畫出來的就是rosenbrock函數。有不明白的再問吧~
function createfigure
% Create figure
figure1 = figure('Position',[10 40 1200 600]);
colormap('gray');
axis square;
R=0:.002:1;
TH=2*pi*(0:.002:1);
X=R'*cos(TH);
Y=R'*sin(TH);
Z=log(1+vrosenbrock(X,Y));
% Create subplot
subplot1 = subplot(1,2,1,'Parent',figure1);
view([124 34]);
grid('on');
hold('all');
% Create surface
surf(X,Y,Z,'Parent',subplot1,'LineStyle','none');
% Create contour
contour(X,Y,Z,'Parent',subplot1);
% Create subplot
subplot2 = subplot(1,2,2,'Parent',figure1);
view([234 34]);
grid('on');
hold('all');
% Create surface
surf(X,Y,Z,'Parent',subplot2,'LineStyle','none');
% Create contour
contour(X,Y,Z,'Parent',subplot2);
% The function vrosenbrock, used in createfigure, calculates Rosenbrock's function at a whole vector of points:
function z=vrosenbrock(x,y)
z=100*(y - x.^2).^2 + (1-x).^2;
I. 三維圖像處理軟體開發
三維圖像處理是基於二維圖像處理的,同時又包括了三維重建過程,建議看看馬頌德的計算機視覺那本書吧,賈雲德的機器視覺也可以,看完了之後再找一些三維圖像處理的碩士、博士論文看看即可。
J. MATLAB在三維圖象上的應用有哪些
MATLAB是矩陣實驗室(Matrix Laboratory)之意。除具備卓越的數值計算能力外,它還提供了專業水平的符號計算,文字處理,可視化建模模擬和實時控制等功能。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學,工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完相同的事情簡捷得多.在新的版本中也加入了對C,FORTRAN,c++ ,JAVA的支持.可以直接調用,用戶也可以將自己編寫的實用程序導入到MATLAB函數庫中方便自己以後調用,此外許多的MATLAB愛好者都編寫了一些經典的程序,用戶可以直接進行下載就可以用,非常的方便。
MATLAB的基礎是矩陣計算,但是由於他的開放性,並且mathwork也吸收了像maple等軟體的優點,使MATLAB成為一個強大的數學軟體
當前流行的MATLAB 6.5/7.0包括擁有數百個內部函數的主包和三十幾種工具包(Toolbox).工具包又可以分為功能性工具包和學科工具包.功能工具包用來擴充MATLAB的符號計算,可視化建模模擬,文字處理及實時控制等功能.學科工具包是專業性比較強的工具包,控制工具包,信號處理工具包,通信工具包等都屬於此類.
開放性使MATLAB廣受用戶歡迎.除內部函數外,所有MATLAB主包文件和各種工具包都是可讀可修改的文件,用戶通過對源程序的修改或加入自己編寫程序構造新的專用工具包.
Matlab的官方網站:http://www.mathworks.com
Matlab的優勢和特點
(1)友好的工作平台和編程環境
MATLAB由一系列工具組成。這些工具方便用戶使用MATLAB的函數和文件,其中許工具採用的是圖形用戶界面。包括MATLAB桌面和命令窗口、歷史命令窗口、編輯器和調試器、路徑搜索和用於用戶瀏覽幫助、工作空間、文件的瀏覽器。隨著MATLAB的商業化以及軟體本身的不斷升級,MATLAB的用戶界面也越來越精緻,更加接近Windows的標准界面,人機交互性更強,操作更簡單。而且新版本的MATLAB提供了完整的聯機查詢、幫助系統,極大的方便了用戶的使用。簡單的編程環境提供了比較完備的調試系統,程序不必經過編譯就可以直接運行,而且能夠及時地報告出現的錯誤及進行出錯原因分析。
(2)簡單易用的程序語言
Matlab一個高級的距陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)後再一起運行。新版本的MATLAB語言是基於最為流行的C++語言基礎上的,因此語法特徵與C++語言極為相似,而且更加簡單,更加符合科技人員對數學表達式的書寫格式。使之更利於非計算機專業的科技人員使用。而且這種語言可移植性好、可拓展性極強,這也是MATLAB能夠深入到科學研究及工程計算各個領域的重要原因。
(3)強大的科學計算機數據處理能力
MATLAB是一個包含大量計算演算法的集合。其擁有600多個工程中要用到的數學運算函數,可以方便的實現用戶所需的各種計算功能。函數中所使用的演算法都是科研和工程計算中的最新研究成果,而前經過了各種優化和容錯處理。在通常情況下,可以用它來代替底層編程語言,如C和C++ 。在計算要求相同的情況下,使用MATLAB的編程工作量會大大減少。MATLAB的這些函數集包括從最簡單最基本的函數到諸如距陣,特徵向量、快速傅立葉變換的復雜函數。函數所能解決的問題其大致包括矩陣運算和線性方程組的求解、微分方程及偏微分方程的組的求解、符號運算、傅立葉變換和數據的統計分析、工程中的優化問題、稀疏矩陣運算、復數的各種運算、三角函數和其他初等數學運算、多維數組操作以及建模動態模擬等。
(4)出色的圖形處理功能
MATLAB自產生之日起就具有方便的數據可視化功能,以將向量和距陣用圖形表現出來,並且可以對圖形進行標注和列印。高層次的作圖包括二維和三維的可視化、圖象處理、動畫和表達式作圖。可用於科學計算和工程繪圖。新版本的MATLAB對整個圖形處理功能作了很大的改進和完善,使他不僅在一般數據可視化軟體都具有的功能(例如二維曲線和三維曲面的繪制和處理等)方面更加完善,而且對於一些其他軟體所沒有的功能(例如圖形的光照處理、色度處理以及四維數據的表現等),MATLAB同樣表現了出色的處理能力。同時對一些特殊的可視化要求,例如圖形對話等,MATLAB也有相應的功能函數,保證了用戶不同層次的要求。另外新版本的MATLAB還著重在圖形用戶界面(GUI)的製作上作了很大的改善,對這方面有特殊要求的用戶也可以得到滿足。
(5)應用廣泛的模塊集合工具箱
MATLAB對許多專門的領域都開發了功能強大的模塊集和工具箱。一般來說,他們都是由特定領域的專家開發的,用戶可以直接使用工具箱學習、應用和評估不同的方法而不需要自己編寫代碼。目前,MATLAB已經把工具箱延伸到了科學研究和工程應用的諸多領域,諸如數據採集、資料庫介面、概率統計、樣條擬合、優化演算法、偏微分方程求解、神經網路、小波分析、信號處理、圖像處理、系統辨識、控制系統設計、LMI控制、魯棒控制、模型預測、模糊邏輯、金融分析、地圖工具、非線性控制設計、實時快速原型及半物理模擬、嵌入式系統開發、定點模擬、DSP與通訊、電力系統模擬等,都在工具箱(Toolbox)家族中有了自己的一席之地。
(6)實用的程序介面和發布平台
新版本的MATLAB可以利用MATLAB編譯器和C/C++數學庫和圖形庫,將自己的MATLAB程序自動轉換為獨立於MATLAB運行的C和C++代碼。允許用戶編寫可以和MATLAB進行交互的C或C++語言程序。另外,MATLAB網頁服務程序還容許在Web應用中使用自己的MATLAB數學和圖形程序。
MATLAB的一個重要特色就是他有一套程序擴展系統和一組稱之為工具箱的特殊應用子程序。工具箱是MATLAB函數的子程序庫,每一個工具箱都是為某一類學科專業和應用而定製的,主要包括信號處理、控制系統、神經網路、模糊邏輯、小波分析和系統模擬等方面的應用。
(7)應用軟體開發(包括用戶界面)
在開發環境中,使用戶更方便地控制多個文件和圖形窗口;在編程方面支持了函數嵌套,有條件中斷等;在圖形化方面,有了更強大的圖形標注和處理功能,包括對性對起連接注釋等;在輸入輸出方面,可以直接向Excel和HDF5。
(8) Matlab常用工具箱介紹(英漢對照)
Matlab Main Toolbox——matlab主工具箱
Control System Toolbox——控制系統工具箱
Communication Toolbox——通訊工具箱
Financial Toolbox——財政金融工具箱
System Identification Toolbox——系統辨識工具箱
Fuzzy Logic Toolbox——模糊邏輯工具箱
Higher-Order Spectral Analysis Toolbox——高階譜分析工具箱
Image Processing Toolbox——圖象處理工具箱
LMI Control Toolbox——線性矩陣不等式工具箱
Model predictive Control Toolbox——模型預測控制工具箱
μ-Analysis and Synthesis Toolbox——μ分析工具箱
Neural Network Toolbox——神經網路工具箱
Optimization Toolbox——優化工具箱
Partial Differential Toolbox——偏微分方程工具箱
Robust Control Toolbox——魯棒控制工具箱
Signal Processing Toolbox——信號處理工具箱
Spline Toolbox——樣條工具箱
Statistics Toolbox——統計工具箱
Symbolic Math Toolbox——符號數學工具箱
Simulink Toolbox——動態模擬工具箱
System Identification Toolbox——系統辨識工具箱
Wavele Toolbox——小波工具箱
例如:控制系統工具箱包含如下功能:
連續系統設計和離散系統設計
狀態空間和傳遞函數以及模型轉換
時域響應(脈沖響應、階躍響應、斜坡響應)
頻域響應(Bode圖、Nyquist圖)
根軌跡、極點配置
1.補充新的內容:
MATLAB R2007b正式發布了!MATLAB 2007b於2007年秋節正式發布,TMW正式發布了MATLAB R2007b,新版本涵蓋:Simulink 7、新產品Simulink Design Verifier、Link for Analog Devices VisualDSP以及82個產品模塊的更新升級及Bug修訂。從現在開始,MathWorks公司將每年進行兩次產品發布,時間分別在每年的3月和9 月,而且,每一次發布都會包含所有的產品模塊,如產品的new feature、bug fixes和新產品模塊的推出。
在R2007b中(MATLAB 7.4,Simulink 6.6),主要更新了多個產品模塊、增加了多達350個新特性、增加了對64位Windows的支持,並新推出了.net工具箱。R2007b, released on March 1, 2007, includes updates to MATLAB and Simulink, two new procts released since R2007b, and updates and bug fixes to 82 other procts. R2007b adds support for the Intel® based Mac, Windows Vista™, and 64-bit Sun Solaris™ SPARC platforms.
這次的升級做了重大的增強,也升級了以下各版本,提供了MATLAB、SIMULINK的升級以及其他最新的模塊的升級。這個Matlab 2007版本不僅僅提高了產品質量,同時也提供了新的用於數據分析、大規模建模、固定點開發、編碼等新特徵。
其中MATLAB Builder for .net擴展了MATLAB Compiler的功能,主要有:
可以打包MATLAB函數,使網路程序員可以通過C#,VB.net等語言訪問這些函數;
創建組件來保持MATLAB的靈活性;
創建COM組件;
將源自MATLAB函數的錯誤作為一個標準的管理異常來處理。
R2007b 提供了重大的新功能: 直接在命令行使用 Real-Time Workshop 的 嵌入式 MATLAB 函數的 C 代碼生成。 另外,Simulink 中的嵌入式 MATLAB 函數塊支持多 M 文件中的演算法。
MATLAB R2007b新版本中,產品模塊進行了一些調整,MATLAB Builder for COM的功能集成到MATLAB Builder for .net中去了,Finacial Time Series Toolbox的功能集成到Financial Toolbox中了。MATLAB 將高性能的數值計算和可視化集成在一起,並提供了大量的內置函數,從而被廣泛地應用於科學計算、控制系統、信息處理等領域的分析、模擬和設計工作,而且利用 MATLAB 產品的開放式結構,可以非常容易地對 MATLAB 的功能進行擴充,從而在不斷深化對問題認識的同時,不斷完善 MATLAB 產品以提高產品自身的競爭能力。
作為和Mathematica、Maple並列的三大數學軟體。其強項就是其強大的矩陣計算以及模擬能力。要知道Matlab的由來就是Matrix + Laboratory = Matlab,所以這個軟體在國內也被稱作《矩陣實驗室》。每次MathWorks發布Matlab的同時也會發布模擬工具Simulink。在歐美很多大公司在將產品投入實際使用之前都會進行模擬試驗,他們所主要使用的模擬軟體就是Simulink。Matlab提供了自己的編譯器:全面兼容C++以及 Fortran兩大語言。所以Matlab是工程師,科研工作者手上最好的語言,最好的工具和環境。Matlab 已經成為廣大科研人員的最值得信賴的助手和朋友!