天氣雷達產(chǎn)品錐面顯示程序設計論文_第1頁
天氣雷達產(chǎn)品錐面顯示程序設計論文_第2頁
天氣雷達產(chǎn)品錐面顯示程序設計論文_第3頁
天氣雷達產(chǎn)品錐面顯示程序設計論文_第4頁
天氣雷達產(chǎn)品錐面顯示程序設計論文_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、分類號:分類號:tn959.4tn959.4 u u d d c c:d10621-408-(2007)d10621-408-(2007) 0344-00344-0密密 級:公級:公 開開 編編 號:號:20030221612003022161成成 都都 信信 息息 工工 程程 學學 院院學學 位位 論論 文文天氣雷達產(chǎn)品錐面顯示程序設計天氣雷達產(chǎn)品錐面顯示程序設計論論文作者姓名:文作者姓名:莫云莫云凱凱申申請請學位學位專業(yè)專業(yè): :電電子信息工程子信息工程申申請請學位學位類別類別: :工學學士工學學士指指導導教教師師姓姓名名( (職職稱稱) ): :舒定波(工程舒定波(工程師師) )論論文提

2、交日期:文提交日期:2007 年年 06 月月 05 日日天氣雷達產(chǎn)品錐面顯示程序設計天氣雷達產(chǎn)品錐面顯示程序設計摘摘 要要天氣雷達產(chǎn)品對天氣預報有著重要的指示作用,為了提高預報的準確性和形象性,對目前的雷達終端產(chǎn)品有一定的改進,本文介紹了氣象雷達終端錐面圖形軟件的繪制原理及軟件實現(xiàn)方法,應用 directx 工具建立考慮地球曲率的錐面模型,結合 visual s 2003 編程工具,生成對應各個 cut 的圖像,將生成的圖像作為對應的紋理圖片,將模型與圖像通過紋理貼圖的方法結合在一起,再經(jīng)過燈光,材質,紋理,視角轉換等進行紋理效果處理,讓生成的產(chǎn)品更加逼真,易于使用者操作,最終構成氣象雷達終

3、端錐面圖形的應用軟件,并提供軟件生成產(chǎn)品的圖像實例,在軟件的終端還加入了用戶控制部分,可以對任意位置的回波信息進行觀察,同時在終端提供了大地參考面和雷達站點的簡要信息,讓軟件的使用者一目了然。關鍵詞:關鍵詞:雷達體掃數(shù)據(jù) 實體建模 directx visual s 2003 紋理貼圖the designing of display program of weather radar productsabstractthe weather radar products has performed an very important part in the weather forecast.in o

4、rder to enhance the forecast accuracy and the iconicity, the present radar terminal products had been improved. this article introduces the weather radar terminal three dimensional graph software plan principle and the software realization method, by using the directx tool establishment considered t

5、he curvature of the earth the conical surface model, unified the visual s 2003 to program the tool. the production corresponds each cut the image, and produce the image took corresponding the texture, the model and the image unified in together, the process light, the material quality, the texture,

6、the angle of view transformation and so on carried on processing, let the production the product be more lifelike, the easy user to operate, finally constituted the weather radar terminal three dimensional graph application software, and provides the software production product the image example.key

7、 words: radar volume scan data entity modeling directx visuals 2003texture map目錄目錄論文總頁數(shù):361 引言引言.11.1 概述概述.11.2 天氣雷達背景知識介紹天氣雷達背景知識介紹.11.3 天氣雷達產(chǎn)品介紹天氣雷達產(chǎn)品介紹.21.41.4 研究意義研究意義.31.5 開發(fā)環(huán)境介紹及研究思路開發(fā)環(huán)境介紹及研究思路.32 建立模型建立模型.52.1 directx 基礎知識基礎知識 .52.2 windows基本編程原理和方法基本編程原理和方法.62.3 模型的構成思路和設計原理模型的構成思路和設計原理.92.3

8、.1 雷達基數(shù)據(jù)產(chǎn)品剖析雷達基數(shù)據(jù)產(chǎn)品剖析.92.3.2 程序概要設計流程程序概要設計流程.102.3.3 兩種模型的對比兩種模型的對比.122.4 地球曲率對模型的影響地球曲率對模型的影響.162.5 模型的效果處理模型的效果處理 燈光效果燈光效果.182.5.2 材質效果材質效果.192.5.3 3d 轉換效果轉換效果 .192.5.4 模型控制模型控制.203 反射率產(chǎn)品圖像生成反射率產(chǎn)品圖像生成.223.1 反射率數(shù)據(jù)提取反射率數(shù)據(jù)提取.223.2 反射率圖像生成反射率圖像生成.223.3 加載色表文件加載色表文件.234 模型與圖像結合(紋理貼圖)模型與圖像結合(紋

9、理貼圖).254.1 貼圖原則貼圖原則.254.2 紋理貼圖效果處理紋理貼圖效果處理.254.2.1 紋理坐標紋理坐標.254.2.2 紋理提交模式紋理提交模式.264.2.3 紋理過濾方式紋理過濾方式.274.2.4 紋理混合紋理混合.274.2.5 紋理透明紋理透明.284.2.6 紋理動畫及多級紋理紋理動畫及多級紋理.284.3 產(chǎn)品生成產(chǎn)品生成.294.4 外界控制外界控制.315 程序設計中需要注意的幾個問題程序設計中需要注意的幾個問題.325.1 關于模型建立的問題關于模型建立的問題.325.2 關于色表讀取的問題關于色表讀取的問題.325.3 關于紋理貼圖的問題關于紋理貼圖的問題

10、.33結論結論.33參考文獻參考文獻.33致謝致謝.35聲明聲明.36第 1 頁 共 30 頁天氣雷達產(chǎn)品錐面顯示程序設計天氣雷達產(chǎn)品錐面顯示程序設計1 引言引言1.1 概述概述天氣對人類的生產(chǎn)生活都起著非常重要的作用,天氣預報則是人類研究天氣,掌握天氣,以便更好應用天氣的主要手段,因此,天氣雷達在天氣預報中扮演一個非常重要的角色。新一代多普勒天氣雷達對氣象預報者及時,準確的預報天氣,將氣象給人類帶來的災害盡可能將降到最低。新一代多普勒天氣雷達的體掃數(shù)據(jù)提供了強度,速度,譜寬三個基本信息。經(jīng)過后端軟件處的理,可以演變成多個適用的軟件二次產(chǎn)品,給使用者帶來方便。目前,我國大多數(shù)氣象產(chǎn)品是以二維形

11、式來表示三維結構,最具有代表的是 ppi(plan indicator) 、rhi(range height indicator) 、cappi(constant altitude plan position indicator),這些方法之局限于二維表示方法。本文所采用的方法是通過 directx 工具進行錐面實體建立模型,通過 visual studio .net 2003 工具讀取體掃數(shù)據(jù),生成對應模型的天氣圖片,將二者結合,通過 directx 紋理貼圖方法處理,得到實際應用的雷達立體錐面顯示軟件。1.2 天氣雷達背景知識介紹天氣雷達背景知識介紹氣象目標的雷達方程1: (1-2-1)2

12、22223|21|2ln10242rmmgczppetr其中雷達天線所接收的回波信號功率;pr 光速;c 雷達發(fā)射機輸出的脈沖功率;pt 發(fā)射脈沖寬度; 天線增益;g 天線水平波束寬度; 天線垂直波束寬度; 雷達發(fā)射信號波長;第 2 頁 共 36 頁 氣象目標的復折射指數(shù),對于水滴,當溫度為時,0.93;mc0。222|21m|m 雷達反射率因子,在瑞利反射區(qū),;其中為第 i 個降ze單位體積6dziedi水粒子的直徑;r 目標距離。對于本課題主要研究是 雷達反射率因子;將ze其進行的立體錐面顯示,讓雷達產(chǎn)品形象,直觀地展現(xiàn)。通過上面的雷達方程,常規(guī)天氣雷達的探測原理是利用云雨目標物對雷達所發(fā)

13、射電磁波的散射回波來發(fā)現(xiàn)氣象目標,并測定其空間位置、強弱分布、垂直結構等;新一代多普勒天氣雷達除了能起到常規(guī)天氣雷達的這種作用外,它的重大改進是可以利用物理學上的多普勒效應來測定降水粒子的徑向運動速度,并通過這種速度信息來推斷降水云體的風速分布、風場結構特征、垂直氣流速度等。具有強探測能力和高探測精度,新一代天氣雷達采用高低兩種脈沖重復頻率,就 c 波段來說,對臺風,暴雨等大范圍的強降水天氣的監(jiān)測距離為 460km,對雹云、龍卷渦度等小尺度強天氣系統(tǒng)的有效監(jiān)測和識別距離為 230km,超過 230km,將沒有速度數(shù)據(jù),風暴識別、跟蹤和預報未來位置可達 345km,在 345-460km之間雖沒

14、有算法應用,但仍有反射率因子產(chǎn)品;先進的實時標校系統(tǒng),新一代雷達的雷達參數(shù)在建站時都經(jīng)過仔細的標準和標定,在日常的運行中,實時的或每經(jīng)過一次體掃之后,對影響雷達定量的參數(shù)進行一次自動校準和檢測,以確保雷達對回波強度的準確測量;同時還具有強大的地物雜波抑制能力;先進的產(chǎn)品算法和智能型的探測分析系統(tǒng)。1.3 天氣雷達產(chǎn)品介紹天氣雷達產(chǎn)品介紹應用多普勒雷達探測到的回波強度、徑向速度和速度譜寬基本數(shù)據(jù),經(jīng)過加工處理,坐標轉換和計算生成某些與氣象有關的物理量后而產(chǎn)生的數(shù)據(jù)或圖像稱為產(chǎn)品。嚴格來說,雷達產(chǎn)品約 28 個,只是因為不同的分辨率和不同的數(shù)據(jù)色標等級,同一個產(chǎn)品又可以分為多個。因此,共有約 80

15、 個雷達產(chǎn)品的編號是不連續(xù)的!根據(jù)雷達產(chǎn)品的分類方式不同,可將雷達產(chǎn)品分為基本產(chǎn)品和導出產(chǎn)品,或基本數(shù)據(jù)產(chǎn)品、物理量產(chǎn)品、信息產(chǎn)品或者錐面產(chǎn)品(仰角)和體積產(chǎn)品2。以前常用的二維雷達產(chǎn)品有平面位置顯示(ppi) ,即雷達天線以固定仰角,全方位掃描的探測方式獲取的數(shù)據(jù),以極坐標的形式,用不同的彩色色標表示數(shù)據(jù)值的大小或方向。距離高度顯示(rhi) ,即雷達天線以固定方式以固定方位作俯仰掃描,這種探測方式獲取的數(shù)據(jù)用不同色標表示數(shù)據(jù)的大小和方向,以極坐標顯示出來的圖像產(chǎn)品。如今運用的天氣雷達產(chǎn)品是多種多樣的,不同的臺站可以根據(jù)不同的地理對產(chǎn)品不同需求。根據(jù)實際需求,對雷達體掃數(shù)據(jù)的強度,速度,譜寬

16、基本信息運用不同算法,得到精簡實用產(chǎn)品。在此,本文主要是對基本的反射率數(shù)據(jù)進行錐面顯示,通過該產(chǎn)品可以直觀清楚地了解地形,云塊,風場等對氣象的影響,能夠逼真的反應外部真實世界,增加用戶操作選擇功能,對第 3 頁 共 36 頁不同仰角的回波數(shù)據(jù)進行立體錐面顯示,用戶通過鍵盤控制能夠對不同位置信息進行全面、細致研究,將雷達掃描方式的回波信息形象展現(xiàn)給用戶,相對于傳統(tǒng)的二維產(chǎn)品具有可視化程度高、立體動態(tài)感強的特點。1.41.4 研究意義研究意義現(xiàn)代天氣雷達產(chǎn)品在天氣預報中有著十分重要的參考意義,通過本課題能夠直觀,形象,生動地展示雷達產(chǎn)品,讓預報者短時間判斷天氣;從而迅速,果斷,準確的做出決策。立體

17、錐面氣象產(chǎn)品可以直觀,清楚地了解地形,云塊等對氣象的影響,能高度逼真的反映外部真實世界,對氣象預報工作者的預報提供了參考依據(jù),讓預告工作者能夠及時為社會公眾提供最新的天氣信息。同時,通過本文的研究,將三維概念在氣象領域中的應用提供給所有關心氣象事業(yè)發(fā)展的人員,將錐面模型的概念應用到天氣預報系統(tǒng)中,讓真實的世界反映到天氣預報系統(tǒng)之中,讓以后的預報更加形象、真實;給以后的其他相關氣象產(chǎn)品的開發(fā)人員提供新的思路。1.5 開發(fā)環(huán)境介紹及研究思路開發(fā)環(huán)境介紹及研究思路visual s 2003 開發(fā)環(huán)境集成了 visual basic.net、c#、visual c+、asp.net 以及 visual

18、 foxpro 開發(fā)工具,visual studio.net 都可以提供近乎完美的解決方案,visual studio.net 提供了包括設計、編碼、編譯調試、數(shù)據(jù)庫聯(lián)接操作等基本功能和基于開放架構的服務器組件開發(fā)平臺、企業(yè)開發(fā)工具和應用程序重新發(fā)布工具以及性能評測報告等高級功能。本程序主要使用 visual c+工具,因為它具有面向對象、可視化開發(fā);眾多的開發(fā)商支持以及業(yè)已成為工業(yè)標準的 mfc 類庫;visual c+封裝了windows 的 api(應用程序接口)函數(shù)、user、kernel、gdi 函數(shù),幫助我們弄清了許多函數(shù)的組織方法,隱去了創(chuàng)建、維護窗口的許多復雜的例行工作,簡化了

19、編程。在本程序中,重點是應用 directx 進行立體錐面建立模型,directx 環(huán)境中能夠建立任何想象的圖像,而最基本的都是由點構成線,而由線構成面,再由面構成體,建立實用的幾何體錐面結構。由于 visual s 2003 能夠很好地應用 directx 所建立的幾何體模型,二者具有很好的兼容性和移植性。綜上所列,本研究選擇 visual s 2003 中的 visual c+能夠實現(xiàn)本文的要求。微軟推出的 directx 開發(fā)工具,其 direct 就是“直接”的意思,x 是代數(shù)中常用于表示未知數(shù)的字符,在這里可以理解成表示所有的一切。在游戲中對所有的一切硬件直接操作,這就是 direc

20、tx 的意思。微軟的 directx 軟件開發(fā)工具包(sdk)提供了一套應用程序編程接口(apis) ,這個編程接口可以開發(fā)高質量、實時的應用程序,當然最主要的就是游戲所需要的各種資源。directx 技術為軟件開發(fā)者提供硬件無關性。微軟開發(fā) directx的主要目的之一是促進 windows 操作系統(tǒng)上的游戲和多媒體應用程序的發(fā)展。另一方面,微軟公司開發(fā) directx 是為了在當今或今后的計算機操作系統(tǒng)上提供給基于 windows 平臺第 4 頁 共 36 頁的應用程序以高表現(xiàn)力、實時訪問硬件的能力。directx 分為普通的安裝包和開發(fā)工具包,為了應用 directx 建立錐面立體模型,

21、因此必須對 directx 開發(fā)工具包了解。本文的最終結果是將雷達的體掃數(shù)據(jù)中的反射率數(shù)據(jù),形象,直觀,準確地顯示在對應的雷達錐面模型位置上。因此,本文的重點是在建立錐面上,只有建立好的錐面模型,才能將回波位置準確地反映。通過 directx 工具建立好立體錐面幾何體模型,應用 visual s 2003 工具解析體掃數(shù)據(jù)文件,生成不同仰角下的紋理圖像,然后再應用 directx下的紋理效果處理,完成立體錐面顯示效果,在窗體上增加選擇不同仰角的立體錐面顯示效果,通過鍵盤控制對錐面模型的各個角度信息準確反映。第 5 頁 共 36 頁2 建立模型建立模型2.1 directx 基礎知識基礎知識在計

22、算機的 3d 世界,可以表現(xiàn)出真實世界中所有的事物。在計算機的三維世界中,如果要顯示一個物體,首先關心的就是這個物體怎樣由點來構成。然后用這些點來構成多邊形,由多邊形來構成立體的幾何形體。只要能確定了點的位置,數(shù)量,顏色,就可以形成任何你需要的物體。在 directx 3d,為了保證永遠使用正的 z 值來表示距離,慣用左手坐標系來表示整個世界的位置。三維旋轉變換可以使物體在三維立體空間中產(chǎn)生旋轉。旋轉可以是沿著 x 軸,或 y 軸,或 z 軸進行。三維縮放可以使物體在三維立體空間中產(chǎn)生大小的縮放效果。在三維坐標中觀察世界時,需要確定以下幾個問題:()在那個位置觀察:需要使用坐標來表示這個觀察點

23、的準確位置,這個坐標是在計算機中的實際坐標系中的值。()向哪個方向觀察。 ()對于觀察者來說,代表上方的方向。最后經(jīng)過三維透視轉換顯示在顯示屏幕中。direct3d 和系統(tǒng)其他組件的關系如圖 13:圖 2.1direct3d 和系統(tǒng)其他組件的關系應用程序(win32 application)通過調用 direct3d 提供的 api 函數(shù)(direct3d api)實現(xiàn) 3d 圖形功能。direct3d api 調用硬件設備(hal device)提供接口。硬件抽象設備調用具體的硬件驅動程序的接口(ddi) ,有具體的硬件驅動程序來操作具體型號的顯卡硬件,完成最終 3d 操作。通過這樣的分層結

24、構,可以在上層使用相同的接口調用來使用任何類型的 3d 顯卡,實現(xiàn)需要的 3d 功能。win32 applicationwin32 applicationdirect3d apigdihal devicedevice driver interface(ddi)graphics hardware第 6 頁 共 36 頁使用 direct3d 編程時,首先創(chuàng)建 direct3d 對象,在程序結束時,也必須釋放direct3d 對象。在創(chuàng)建完 direct3d 對象后,可以獲得指向 direct3d 對象的接口指針。通過指向 direct3d 對象的接口指針,我們可以調用 direct3d 對象提供

25、所有接口函數(shù)。創(chuàng)建direct3d 對象的代碼如下所示:lpdirect3d9 g_pd3d = null ; /定義 direct3d 對象的指針,初始化為空if( null = ( g_pd3d = direct3dcreate9( d3d_sdk_version ) ) ) return e_fall;/判斷返回值,如果為空,表示創(chuàng)建失敗direct3d 設備是 direct3d 中的渲染組件,負責把 3d 場景進行作色、光照等效果處理,形成可以顯示的圖像。設備中包含了渲染狀態(tài)、坐標轉換等信息。在程序中,我們可以認為 direct3d 設備就是繪圖的物理設備,而不需要關心使用什么具體的顯

26、卡在進行 3d 操作。lpdirect3ddevice9 g_pd3ddevice = null;/定義 d3d 設備接口指針初始化為空/定義 present 參數(shù)結構d3dpresent_parameters d3dpp;zeromenory(&d3dpp,sizeof(d3dpp);d3dpp.windowed = true;d3dpp.swapeffect = d3dswapeffect_copy_vsync;if(failed(g_pd3d-createdevice(d3dadapter_default,d3ddevtype_hal,hwnd,d3dcreate_software_ve

27、rtexprocessing,&d3dpp,&d3ddevice ) ) )return e_fall;/調用函數(shù)創(chuàng)建設備,如果函數(shù)執(zhí)行失敗返回為空。經(jīng)過上面的簡單介紹,了解到 direct3d 中三維世界的表示方法,坐標系統(tǒng),以及如何把三維世界中的模型顯示在顯示器中的概念和原理,以及基本的創(chuàng)建 direct3d 對象和創(chuàng)建direct3d 設備的方法,對 direct3d 有一個總的認識。但是光了解這些還遠遠不夠,要應用一個窗口,就必須對 windows 窗口模式的編程原理進行掌握。2.2 windows 基本編程原理和方法基本編程原理和方法用 c+編寫一個 windows 應用程序,必須掌

28、握 windows 的基本編程原理。windows程序需要一個 winmain()函數(shù),該函數(shù)主要是建立應用程序的主窗口。用 windows 窗口結合 directx 建立幾何體模型,對一個基本的 windows 窗口,其構成有以下幾部分,注冊一個窗口類,然后創(chuàng)建窗口,在創(chuàng)建窗口的過程中可以對窗口的屬性進行修改,包括窗口的名稱、大小、位置等。接著初始化 3d 設備(首先根據(jù) directx 的版本號創(chuàng)建 3d 對象,接著定義 present 參數(shù)結構,設置 present 的各項屬性,跟著創(chuàng)建 d3d 設備,在此可以調用 setrenderstate 函數(shù)設置渲染狀態(tài));若初始化初始化 3d

29、設備成功的話,接著就可以創(chuàng)建任意幾何體模型了(用 createvertexbuffer 創(chuàng)建頂點緩存區(qū),接著可以定義一個指第 7 頁 共 36 頁針,用于復制頂點數(shù)據(jù)時指向頂點緩沖區(qū)的內存地址) 。初始化后,可以顯示窗口了,并且可以進行消息的相互傳遞,可以對鍵盤,鼠標等外部設備動作進行響應,執(zhí)行對應的事件。接著可以對幾何體模型進行著色,著色之前可以對其進行紋理,燈光,視角等屬性進行詳細編輯,使立體錐面幾何體模型更加生動,逼真。完成著色之后,接著釋放設備,最后應該注銷窗口。windows 程序是通過操作系統(tǒng)發(fā)送的消息來處理用戶輸入的,程序的主窗口中需要包含處理 windows 所發(fā)送的消息代碼:

30、下圖是 windows 程序和 windows 消息的基本流程4:圖 2.2windows 程序和消息處理流程圖windows 是消息驅動(或事件驅動的)操作系統(tǒng)。消息驅動意味著操作系統(tǒng)的每一部分和其他部分以及應用程序之間,是通過 windows 消息進行通信。windows 程序在開始部分也需要進行初始化,但初始化完成后就開始等待用戶的各種輸入。一旦用戶有任何輸入(例如鍵盤或鼠標輸入) ,操作系統(tǒng)便會感知,然后向相應的應用程序發(fā)送消息,程序要能夠隨時接受并處理這些消息。函數(shù)入口:注冊一個窗口類main()函數(shù)開始開始執(zhí)行終止執(zhí)行初始化從消息隊列取得一個消息默認處理處理消息當前消息是否“退出”

31、消息是否本程序要處理的消息第 8 頁 共 36 頁圖2.3main函數(shù)的流程圖從圖2.3我們不能看出,在directx中,任何函數(shù)都是從main()函數(shù)開始執(zhí)行程序,作為程序的入口,在main()幾乎包括整個程序的流程。在directx中,進入main()函數(shù)后,首先需要注冊一個窗口類,在窗口類中,包括窗口的類名,窗口模式,消息處理等屬性;注冊完一個窗口類后,接著就可以創(chuàng)建應用窗口了;跟著初始化3d對象和設備,如果成功,就可以顯示窗口,更新窗口,進入消息處理函數(shù),然后進行窗口內存釋放;如果不成功,直接進入到內存釋放。最終整個函數(shù)返回0值。以上就是整個directx的main()工作過程,在本文

32、中,需要建立模型,在初始化3d設備和對象成功之后,就可以初始化模型,然后進行渲染等3d效果處理。消息處理函數(shù)是一個很重要的函數(shù),通過參數(shù)的傳遞,該函數(shù)可以響應 windows 應用下的任何事件。在 msgpro()函數(shù)下,對 msg 消息進行消息類型的判斷,當窗口銷毀時,就創(chuàng)建應用窗口初始化 3d 設備及對象是否成功顯示窗口,更新窗口進入消息處理函數(shù)窗口內存釋放返回值 0第 9 頁 共 36 頁觸發(fā) wm_destroy 事件,進而調用 cleanup()函數(shù)和 postquitmessage( 0 )函數(shù)。將創(chuàng)建3d 的內存空間,設備對象及模型的存儲空間進行釋放,節(jié)約內存資源。而當響應wm_

33、paint 消息時,就調用 render()和 validaterect 函數(shù)。對窗口區(qū)域的模型色彩進行渲染,讓立體模型更加生動形象。最后 msgpro()函數(shù)將要執(zhí)行的事件反饋給主函數(shù),實現(xiàn)消息響應功能,以上就是消息處理函數(shù)的整個過程,當然消息處理函數(shù)的響應事件是很多的,包括一個鍵盤的任意鍵被按下事件,鼠標的移動事件等等。開發(fā)人員可以根據(jù)自己的需要來進行適當?shù)南⑹录x擇。圖 2.3 介紹了 main()函數(shù)的整個程序的執(zhí)行過程,在上面則介紹了 windows 如何響應消息,對一個 windows 程序的運行過程也有一個總體的認識和了解,應用上述簡單的框架,開發(fā)者可以在初始化設備及模型之后初

34、始化自己所能想到的任意幾何體模型,然后進行directx 下的燈光,材質,紋理,視角轉換,霧化,雨化,雪化等特殊效果處理手段,進行渲染,建立切切實實的立體圖形。呈現(xiàn)生動,形象的圖形,開發(fā)者可以發(fā)揮自己的想象能力,建立自己的應用模型,運行 directx 先進技術,結合構成思路,將一個幾何體模型分解成若干三角形構成,而三角形又是由點構成的,通過點的連接順序不同,繪制不同的幾何體模型,運用到實際中2.3 模型的構成思路和設計原理模型的構成思路和設計原理2.3.1 雷達基數(shù)據(jù)產(chǎn)品剖析雷達基數(shù)據(jù)產(chǎn)品剖析本文研究的是對天氣雷達產(chǎn)品的反射率信息進行立體錐面顯示,關鍵在于如何建立的模型才是最佳的模型,為了能

35、夠建立最優(yōu)模型,必須對雷達的反射率產(chǎn)品的構成結構進行深入的剖析。 圖 2.4錐面模型分析從上圖我們可以看到,一個錐面模型的構成需要知道方位角,仰角,斜距,而這些數(shù)據(jù)都可以從雷達的體掃數(shù)據(jù)得出,在雷達數(shù)據(jù)中,雷達所能探測的最遠距離是 512km,而方位角(theta)斜距(m_c)仰角(fi)第 10 頁 共 36 頁每公里則有八個點,即每個點所代表的距離是 125m;在方位角上,theta 的變化范圍為0360 度,在方位角上,總共有 600 個徑向;而在仰角上,對一般的雷達來說,變化范圍小于 90 度,在低仰角掃描的時候,由于受到地物雜波的干擾,為了能夠很好地消除地物雜波,在低仰角往往掃描兩

36、次,而隨著仰角的增大,其仰角的抬升間隔頁逐漸增大,因為在高仰角掃描的時候,天氣現(xiàn)象已經(jīng)離雷達觀測地很近,沒有多大的實際預報價值。由上可知,一幀平掃掃描數(shù)據(jù)為 600512m 個(m 為所觀測的參數(shù)個數(shù)) ,這樣一個完整的體掃數(shù)據(jù)文件有數(shù)據(jù) 600512mn(n 為仰角層數(shù),m 為所測參數(shù)個數(shù)) ,它記錄了不同仰角層、不同參數(shù)的各個方位回波強度。利用 directx 技術,方位角、仰角、作用距離(即斜距)確定了三維立體空間坐標,將回波數(shù)據(jù)強度轉變?yōu)槲矬w模型中的顏色,這樣觀測員便可以根據(jù)三維立體錐面模型中的顏色變化直觀地了解氣象的變化與空間結構的分布情況,充分反映立體、動態(tài)、連續(xù)、多層的情況。本文

37、通過以下過程來實現(xiàn)。2.3.2 程序概要設計流程程序概要設計流程所有函數(shù)都是從 main()函數(shù)開始執(zhí)行的,然后進行注冊一個窗口,創(chuàng)建窗口,對于本文的 directx 來說,必須初始化 directx3d 設備及對象成功后才能夠初始化幾何體模型,只有初始化幾何體模型成功后才對窗口進行顯示,更新,和消息處理,通過消息處理事件,轉譯消息,分散消息,最后進行幾何體模型的渲染;構成一個生動的幾何體模型,這就是本文構建模型的思路,然后運用 directx 工具下的貼圖效果處理手段,對立體錐面模型進行渲染效果處理。下面是設計的主流程圖 2.5: 開始注冊窗口類,創(chuàng)建窗口初始化 3d 設備及對象是否成功初始

38、化幾何體模型是否成功 顯示窗口,更新窗口,進入消息循環(huán)處理第 11 頁 共 36 頁圖 2.5整個程序設計流程圖圖 2.5 是對整個程序設計流程的概述,對于其中初始化 3d 設備及對象的概述和流程在前面以前提及過,對 3d 立體錐面模型的構建,如果幾何模型中使用了紋理貼圖,首先應該打開紋理圖片,本文主要是通過紋理貼圖手段來達到立體效果。成功后按照對應的結構體創(chuàng)建頂點緩存區(qū),緩存區(qū)創(chuàng)好后,就需要按設計要求往頂點緩存區(qū)存放點數(shù)據(jù)。模型的構成就是這樣,建模的簡要流程圖如圖 2.6:無wm_quit消息事件peekmessage函數(shù)是否為 1轉譯消息,分播消息渲染幾何體模型釋放窗口內存空間返回值 0,

39、程序結束創(chuàng)建模型開始文理圖片打開是否成功創(chuàng)建頂點緩存區(qū)是否成功按設計要求存放點數(shù)據(jù)返回打開失敗返回創(chuàng)建失敗第 12 頁 共 36 頁圖 2.6創(chuàng)建幾何體模型的簡要流程圖圖 2.6 主要介紹的是模型的建立的簡要流程圖,當一個模型建立好后,渲染效果決定模型的成功與否,模型的渲染是 directx 中非常重要的部分。渲染效果決定了模型的構成方式,在模型渲染之前還可以進行多種立體效果處理,燈光,紋理,材質,坐標轉換,霧化,雨化,雪化等效果處理,給人更加逼真的效果。這些效果處理將在后面的章節(jié)中做專門深入的講解。由此可見,本文的關鍵在于模型的建立和貼圖的效果處理,模型構成原理已在前面介紹,模型的構成方式是

40、多種的,幾種模型根據(jù)數(shù)據(jù)的實際數(shù)據(jù)構成,經(jīng)過比較篩選,確定一種合適的模型構建思路,下面是兩種建立模型思路的比較。2.3.3 兩種模型的對比兩種模型的對比根據(jù)上面的模型產(chǎn)品剖析,對雷達反射率的顯示應用了解。對模型的建立構成,采取的手段也是多種方式,不管建立什么樣的模型,最基本的也是最重要的就是如何建立好點,只有把點建立好后,才能構成線,進而構成面,最后構成體,這個總體的基本思路是不會改變的。因此立體錐面模型點的構成方式就成了本文的重點。不管采取什么樣的手段建立模型,都必須首先把點建立好,下面介紹幾種建立模型的方法:圖 2.7立體錐面投影確定點坐標確定好各個點的坐標后,最主要的就是點的連接方式,在

41、 direct3d 中,點的坐標連接方式總共有點列表(pointlist),線列表(linelist),線條紋(linestrips),三角形列表(tranglelists),三角形條紋(trianglestrips),三角形扇(trianglefans)方位角(theta)氣象目標高度仰角(fi)結束,返回第 13 頁 共 36 頁六種連接方式,根據(jù)我們需要,我們在這里選擇了三角形條紋進行了點的連接,連接時應該注意的是點的存放順序也對最后的圖形效果有影響,為了便于后面的貼圖處理,我們必須把我們所建立的幾何體模型構成一個封閉的曲面,第一種方法,利用錐面在平面上的投影來確定錐面的位置,雷達能探測

42、的最遠距離為m_c,則雷達所能探測的高度(z 坐標)為:m_z = m_c * sin(fi)(2-1)其中仰角 fi 在一定范圍變化,由雷達的體掃數(shù)據(jù)給出。雷達目標物在水平面的坐標(x,y)坐標方程為:m_x = m_c * cos(fi) * cos(theta)(2-2)m_y = m_c * cos(fi) * sin(theta)(2-3)根據(jù)式 1,2,3 可以確定錐面幾何體模型的位置坐標。假定某一個定值仰角,就模型的構成來說,可以設置最遠距離為 512km。直接運用最遠距離的圓的點,將圓分為四十等分,即由四十個 theta 值,將最遠一圈的數(shù)據(jù)構成的點,直接與圓心連接,就構成了一

43、個錐面模型,其實現(xiàn)代碼如下:float fi =2*d3dx_pi/6;a = c * cosf(fi);b = c * sinf(fi);pvertices2cnt.position = d3dxvector3( a*cosf(theta), b, a*sinf(theta) );經(jīng)過上面簡短程序,可以構成的點如圖 2.8,其點的連接方式,可以以線列表的方式構成連接如圖 2.7,可以以三角形帶列圖構成如圖 2.10,如果填充模式不是以線框模式填充,而以實體模式填充,則構成錐面如圖 圖 2.8第一種模型點模式第 14 頁 共 36 頁圖 2.9第一種模型線列表模式 圖 2.10第一種模型三角形

44、帶列表模式圖 2.11第一種模型實體填充效果圖經(jīng)過上面的圖形,清楚發(fā)現(xiàn)各個模型的由點到線再到面的整個過程。立體錐面的終于構成,仔細想下便知,數(shù)據(jù)的構成形式每公里 8 個點,每一個 cut 上有 600 個徑向,這是一個相當龐大的數(shù)據(jù),而第一種模型就一概而論。將整個圖形全部應用到立體錐面中,當觀察者需要知道某個距離確切位置上點的雷達回波信息時,那就會時一件非常麻煩的事,為了對雷達立體錐面模型的距離做一個標定,因此,必須考慮另外一種立體錐面模型,更適用于現(xiàn)代氣象觀察中。第二種模型建立的方案是考慮到距離,也即是考慮到了對某個具體位置的雷達回波信息進行參照,經(jīng)過考慮,用于本研究在徑向立體錐面的徑向距離

45、上選用了 5 個徑向距離,也就是將 512km 用 4 個距離段來表示,每個距離段代表 128km,當然這個距離劃分越細越好,經(jīng)度越高,應用價值也越高。假設仰角為某一定值,方位角上仍然劃分 40 等分,對于每個點的確定仍然可以用式 1,2,3 來表示,在代碼中需要主要的是,在徑向距離上第 15 頁 共 36 頁多了幾次循環(huán)。其第二種模型的主要程序部分如下:int iradialpoint = 5; /雷達所能探測的最大點。int cnt = 0;pvertices2cnt.position=d3dxvector3( 0, 0, 0 );cnt+;for( dword i=0; i40; i=i

46、+1 )float theta = float(2*d3dx_pi*i)/(40-1);float fi =2*d3dx_pi/6;for( float point = 0;point setlight( 0, &light ); /設置燈光g_pd3ddevice-lightenable( 0, true );/打開燈光第 19 頁 共 36 頁g_pd3ddevice-setrenderstate( d3drs_lighting, true ); /燈光著色方式g_pd3ddevice-setrenderstate( d3drs_ambient, 0 xf0f0f000 );/最后,打開一

47、些ambient(散射光)2.5.2 材質效果材質效果在真實的自然環(huán)境中,每種物質表面都具有不同的材質。比如鏡子,會在陽光下反射強烈的光線,而木質的家具在光線下又顯得比較溫和。物體的材質決定了物質的表面如何對光線做出反應,如何反射光線,包括如何進行鏡面反射和如何進行漫反射;在高光部分如何反射光線;是否會自己發(fā)出光線。如果沒有定義物體的材質,那么 direct3d 場景中即使有光源,但是物體沒有反射任何的光線,那么物體將會是仍然一片漆黑。因此,需要在 direct3d 場景中使用燈光,幾何體模型必須指定材質,才能顯示出理想中顏色和光照效果。跟燈光效果類似,在使用材質之前需要定義材質的結構,設置物

48、體鏡面反射的顏色和透明度,設置物體漫反射的顏色和透明度,設置高光部分的顏色和透明度,使用者可以根據(jù)自己的實際模型所需進行取舍和調整。材質結構變量中包括diffuse,ambient,specular,emissive,power,pmaterial 成員。diffuse 表示材質反射的光線顏色;ambient 表示物體漫反射光線的顏色;specular 表示次啊之高光部分發(fā)射什么顏色,也就是反射光線最多的,最亮的部分反射什么顏色的光線;emissive 表示材質表面發(fā)出光線的顏色;power 表示材質的高光部分反射的光線強度值;pmaterial 是指向材質的指針。使用了材質效果后,與燈光效果

49、結合起來,與實際效果接近一步。下面給出了一個紅色材質例子程序:d3dmaterial9 mtrl;:zeromemory( &mtrl, sizeof(d3dmaterial9) );mtrl.diffuse.r = mtrl.ambient.r = 1.0f; /反射光多能工物體漫反射光都為紅色mtrl.diffuse.g = mtrl.ambient.g = 0.0f;mtrl.diffuse.b = mtrl.ambient.b = 0.0f;mtrl.diffuse.a = mtrl.ambient.a = 1.0f;g_pd3ddevice-setmaterial( &mtrl );

50、 /設置材質2.5.3 3d 轉換效果轉換效果前面介紹了3d的轉換原理,在direct3d中主要包括世界坐標系轉換,透視轉換,觀察坐標系轉換。接下來我們一一介紹,透視轉換決定了觀察攝像機的鏡頭屬性。比如觀察的水平范圍角度和垂直范圍角度,從什么距離開始到什么距離結束的范圍內的場景可以被觀察到,下面是透視轉換的一個例子程序:d3dxmatrixa16 matproj; /定義矩陣結構d3dxmatrixperspectivefovlh( &matproj, d3dx_pi/4, 1.0f, 1.0f, 100.0f );/使用該函數(shù)完成透視轉換,觀察角度的幅度值是d3dx_pi/4,從觀察點位置前

51、1個坐標單位到100個坐標第 20 頁 共 36 頁單位范圍內的3d世界可以被觀察到。g_pd3ddevice-settransform( d3dts_projection, &matproj );/函數(shù)調用完成轉換觀察坐標系轉換可以實現(xiàn)改變觀察者的觀察方向和觀察位置的功能。在 3d 游戲中,當你通過鍵盤和鼠標控制模型在 direct3d 世界中變化時,這個功能就是通過觀察坐標系轉換實現(xiàn)的。下面是觀察坐標系轉換的一個例子程序:d3dxvector3 veyept( m_xpos, m_ypos,-m_zpos); /眼睛位置,觀察者在三維坐標中的坐標;d3dxvector3 vlookatpt

52、( 0.0f, 0.0f, 0.0f ); /觀察的方向,d3dxvector3 vupvec( 0.0f, 1.0f, 0.0f ); /相對于觀察者上方的方向d3dxmatrixa16 matview; /定義矩陣結構d3dxmatrixlookatlh( &matview, &veyept, &vlookatpt, &vupvec );/觀察坐標轉換g_pd3ddevice-settransform( d3dts_view, &matview ); /調用函數(shù)完成轉換世界坐標系轉換可以實現(xiàn)物體在 direct3d 坐標系中位置的改變。模型中所有的運動物體都是通過進行世界坐標系轉換不斷的連

53、續(xù)改變坐標位置而產(chǎn)生運動的效果。在 direct3d中使用坐標系轉換非常方便。如下例程序:d3dxmatrix matworld;/定義矩陣結構d3dxmatrixrotationyawpitchroll(&matworld, 0, 0, 10);/將物體在z的正方向移動10個坐標單位g_pd3ddevice-settransform( d3dts_world, &matworld );/調用函數(shù),完成轉換2.5.4 模型控制模型控制模型控制是 direct3d 中必不可少的組成部分,如果我們所建立的模型失去了控制,就如游戲成了電影,只能觀看,而不能切身體會,也就失去了它的魅力所在。為了讓模型

54、與使用者能夠更加緊密聯(lián)系,我們必須加入簡單的控制操作,讓使用者能夠從各個角度看到我們的模型特征和徑向信息。通過鍵盤事件觸發(fā) windows 消息處理函數(shù),讓 windows 響應鍵盤控制操作。有了鍵盤控制操作,我們可以通過按鍵切換模型的填充模式(線框模式/實體模式) ,可可以 keydown()事件,設置不同的虛擬鍵,改變世界坐標轉換中的坐標值,讓模型繞x,y,z 軸一定角度旋轉,還可以改變觀察坐標系中的坐標值,讓觀察者從不同的視角觀察同一模型。以上只是通過 windows 事件處理鍵盤消息,同理,還可以處理鼠標操作;有了這些使用者的操作控制后,讓使用者跟模型更加密切,有了相互溝通的橋梁,因此

55、,外界控制是 direct3d 世界中必不可少的工具。以下是模型控制代碼:switch( nchar )case 0 x57:/wm_nrotatex += 2; /每次沿x坐標旋轉2度第 21 頁 共 36 頁case 0 x4d: / mm_bearth = !m_bearth; /是否繪制大地,切換鍵break;case 0 x43: / c通過判定,切換立體錐面模型的填充方式是線框模式還是實體模式m_bwireframe = !m_bwireframe;g_pd3ddevice-setrenderstate( d3drs_fillmode, m_bwireframe? d3dfill_

56、wireframe : d3dfill_solid );break;case b:m_busetexture = !m_busetexture; /通過按鍵切換是否使用紋理效果break;render();/渲染(其他directx效果處理進行調用)cview:onkeydown(nchar, nrepcnt, nflags);本研究用到的主要效果處理就是以上幾種效果處理,還有一種重要的紋理效果處理沒有涉及,將在后面章節(jié)結合根據(jù)體掃數(shù)據(jù)生成的紋理圖片來講述紋理效果,運用到實際的例子中。除了上面提到的幾種 directx3d 效果外,還有霧化,雨化,雪化及粒子系統(tǒng)等效果。為了限制 direct3

57、d 世界的可視距離,就需要加入霧化效果;用 3d 中的點列表或者線列表則可以表示雨化效果。以上部分都是對模型本身的控制操作,并沒有給立體錐面賦予精美的表面紋理,與普通的幾何體沒有差別。為此,必須給出錐面模型的紋理,下面就將介紹立體錐面幾何體的紋理圖像是如何生成的。第 22 頁 共 36 頁3 反射率產(chǎn)品圖像反射率產(chǎn)品圖像生成生成3.1 反射率數(shù)據(jù)提取反射率數(shù)據(jù)提取通過查閱相關雷達資料和雷達數(shù)據(jù)格式文檔,該雷達體掃數(shù)據(jù)主要有三部分組成,站址參數(shù)段,性能參數(shù)段和觀測參數(shù)段。站址參數(shù)段主要包括站址信息,文件頭的長度,站址的站名,雷達的經(jīng)緯度信息,天線的海拔高度,測站四周地物最大仰角,站址的最佳觀測仰

58、角,以及站點編號等信息;而在雷達性能參數(shù)段主要包括天線增益,水平,垂直波束寬度,極化狀況,波長,雷達峰值功率,速度處理方式,地物處理方式等雷達性能進行設置;在觀測參數(shù)段就包含掃描方式,立體掃描層數(shù),觀測精確時間,開始 gps 時間,觀測要素,速度退模糊,脈沖重復頻率,最大測速,最大測距,各層的仰角,一個徑向中的數(shù)據(jù)排列方式,一個強度,速度,譜寬占用的字節(jié)數(shù),觀察結束精確時間等信息。數(shù)據(jù)的存放內容都嚴格按照數(shù)據(jù)格式存儲。根據(jù)雷達體掃數(shù)據(jù)的格式,解析對應部分的具體參數(shù)組成,在雷達掃描方式上要注意,因為雷達的掃描方式不同將會帶來產(chǎn)生的數(shù)據(jù)組成方式也不同,有些仰角只要強度信息,而沒有譜寬和速度信息,而

59、有的仰角層掃描里卻沒有強度信息,要區(qū)分每個仰角層里究竟包括了那些數(shù)據(jù),必須對雷達的掃描方式了解。雷達的仰角和距離也很重要,這些數(shù)據(jù)通過雷達體掃數(shù)據(jù)直接提供給用戶,用戶在后端的進行的開發(fā)二次產(chǎn)品,都是在這個數(shù)據(jù)可信的基礎上實施的;通過這兩個因素以及方位角就能夠準確地定位出哪一點的天氣數(shù)據(jù)信息。通過詳細準確的數(shù)據(jù)格式,可以根據(jù)文件的路徑來讀取體掃數(shù)據(jù),在這里,只需要讀取體掃數(shù)據(jù)中的強度數(shù)據(jù),來進行圖形的繪制。在紋理圖形繪制之前,必須保證讀取的數(shù)據(jù)是正確的,每個距離庫的大小,每個徑向數(shù)據(jù)的長度,必須嚴格按照數(shù)據(jù)格式文件頭來處理。反射率數(shù)據(jù),即強度信息,是本研究所關心的數(shù)據(jù),對于與反射率無關的數(shù)據(jù),可

60、以直接跳過,節(jié)約時間和空間,對于出現(xiàn)的問題,可以對程序設置斷點進行調試,直到最后正確執(zhí)行。反射率數(shù)據(jù)反映的是云塊的厚度和范圍大小,對是否降雨,降多大的雨,有很重要的關系。因此,必須準確生成強度紋理圖形。3.2 反射率圖像反射率圖像生成生成生成圖像的軟件流程圖如下:開始第 23 頁 共 36 頁圖 3.1生成紋理圖像的流程圖打開體掃文件后,對體掃文件進行解析,確定各個參數(shù)段的對應的值。建立一個10241024 大小的圖像,而每一個 cut 都有 600 個徑向的數(shù)據(jù),每公里有 8 個點,接著就需要在每個 cut 的空的圖像文件中貼上數(shù)據(jù)。而數(shù)據(jù)的組成則全部來自體掃數(shù)據(jù)的對應反射率。首先應該確定各

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論