freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl的三維飛行器程序設(shè)計(jì)與仿真_畢業(yè)論文(留存版)

2025-09-14 14:25上一頁面

下一頁面
  

【正文】 2MAX,1,zrange1MAX)。由于地形圖其實(shí)就是由高度值組成的柵格,那么可以創(chuàng)建一個(gè)二維頂點(diǎn)坐標(biāo)陣列,柵格將沿著 x軸和 z軸分布,而 y軸則代表地形的高度。 繪制球體時(shí)我們調(diào)用了 OpenGL中的繪制球體函數(shù)。視點(diǎn)方向 Y=1表示我們的頭始終是正立的。 // If Load Failed Return NULL } 最后在上面的工作完成后,由于位圖的顏色格式為 BGR,因此還必須交換 R和 B的值,以得到 RGB數(shù)據(jù)。這種到窗口坐標(biāo)的映射是最后一個(gè)完成的變換,成為視口變換。它可以移動(dòng)物體,對(duì)它們進(jìn)行旋轉(zhuǎn),或者對(duì)它們進(jìn)行縮放。也就是一些列點(diǎn)和矩陣相乘的操作:例如: 有個(gè)平移矩陣 : )23(1000100010001??zyxM 如果要用這個(gè)矩陣平移一個(gè)點(diǎn),只要用這個(gè)矩陣乘以這個(gè)點(diǎn)的矢量矩陣,就像下面這樣: )33(1??zyxP )43(11*1000000010001* ??????zZyYxXZYXzyxPM 在本文中,飛機(jī)在沒有任何操作的情況下一直沿 z軸 飛行,這個(gè)操作過程調(diào)用的是OpenGL中的 gltranslate()函數(shù),它的內(nèi)部就封裝了上述的處理過程,對(duì)飛機(jī)模型說出的位置進(jìn)行上述變換,使得飛機(jī)一直向前飛行; 接下來說旋轉(zhuǎn)變換: 旋轉(zhuǎn)變換主要運(yùn)用了三角學(xué),而且關(guān)于每個(gè)坐標(biāo)軸的旋轉(zhuǎn)都有相應(yīng)的不同的變換矩陣: 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 關(guān)于 x坐標(biāo)軸的旋轉(zhuǎn)變換矩陣定義如下: )53(10000c o ss i n00s i nc o s00001???????X 在關(guān)于 x軸旋轉(zhuǎn)過程中,其 x軸保持不變 ,關(guān)于 y軸的選裝也是同樣的道理,要保持 y軸的坐標(biāo)值不變,其變換矩陣如下所示: )63(10000c o ss i n000100s i n0c o s??????Y 同樣,關(guān)于 z軸的旋轉(zhuǎn),保持 z軸值不變: )73(1000010000c o ss i n00s i nc o s???????Z 如果要讓一個(gè)點(diǎn)繞某一坐標(biāo)軸旋轉(zhuǎn),就用此坐標(biāo)軸的旋轉(zhuǎn)乘以這個(gè)點(diǎn),例如,講一個(gè)點(diǎn)繞 z軸旋轉(zhuǎn),就像下面這樣: 西安科技大學(xué)畢業(yè)論文 13 )83(1??ZYXP 然后用這個(gè)點(diǎn)去和 Z軸的變換矩陣相乘,即得到這一點(diǎn)旋轉(zhuǎn)后的結(jié)果: )93(11c o s*s i n*s i n*c o s**1000010000c o ss i n00s i nc o s* ??????????????YXYXWZYXPZ 在飛機(jī)左右旋轉(zhuǎn)或者滾降的 過程中,飛機(jī)所在位置都是圍繞 Y軸或者 X軸在旋轉(zhuǎn),雖然可以直接調(diào)用 OpenGL中的 glrotate()函數(shù),但這個(gè)函數(shù)內(nèi)部的計(jì)算過程全部類似于上面的處理過程。要使 Windows 的窗口格式為 OpenGL 所接受 ,需進(jìn)行下面的其他設(shè)置。 地面的構(gòu)建主要是采用繪制網(wǎng)格的方法,繪制一個(gè)巨大的三角形網(wǎng)格條帶,在這里要注意紋理坐標(biāo)中高度值得獲得,然后在利用紋理貼圖,在上面貼上草地,可以實(shí)現(xiàn)模擬真實(shí)的草地場景,最后通過隨機(jī)賦予網(wǎng)狀格高度來模擬高低起伏的地面,與此同時(shí),在此地面上設(shè)置 一個(gè)高度,設(shè)計(jì)為海平面,海平面實(shí)際為一個(gè)多邊形,在上面貼上水面的紋理就可以模擬水面的場景。 OpenGL 提供了功能強(qiáng)大的圖元繪制命令 , 所有高級(jí) 的目標(biāo)繪制都通過這些命令來實(shí)現(xiàn) , 它共包括100 多個(gè)功能強(qiáng)大的圖形函數(shù) , 分屬于三個(gè)基本的圖形庫 : 基礎(chǔ)核心庫 ( g l) 、應(yīng)用程序庫 ( Glu) 和編程輔助庫 ( AUX) 。經(jīng)過近幾年來的發(fā)展 , 虛擬現(xiàn)實(shí)技術(shù)及設(shè)備被很多領(lǐng)域應(yīng)用 , 而飛行仿真是最重要的應(yīng)用領(lǐng)域之一。 1 論文題目:基于 OpenGL的三維飛行器程序設(shè)計(jì)與仿真 摘 要 本文基于 OpenGL,應(yīng)用 Visual C++ 平臺(tái),用 C++編程對(duì)飛行器的飛行場景進(jìn)行了設(shè)計(jì)與仿真 .這樣做的目的是由于在實(shí)際操縱中,使用真實(shí)的飛機(jī)來訓(xùn)練新操作手的風(fēng)險(xiǎn)和代價(jià)是很高的,所以 ,在實(shí)驗(yàn)室中使用模擬訓(xùn)練器來訓(xùn)練是國內(nèi)外通常采用的有效方法。 OpenGL是 SGI公司開發(fā)的與硬件環(huán)境和操作系統(tǒng)獨(dú)立的 API,它提供了建模、坐標(biāo)變換、著色、光照、平滑等二維和 三維圖形功能以及紋理映射、曲線等高級(jí)功能,并且能夠生成三維場景,繪制三維物體 OpenGL良好的交互性和代碼運(yùn)行的高效性使它已經(jīng)成為三維動(dòng)畫和虛擬現(xiàn)實(shí)場景開發(fā)的重要工具。在 Visual C+ + 編程環(huán)境下 , 能方便地調(diào)用這些函數(shù)對(duì)三維圖形進(jìn)行仿真。光照和霧可以調(diào)用 OpenGL中的相關(guān)函數(shù)進(jìn)行設(shè)計(jì)。 建立圖形操作描述表 OpenGL 作圖窗口必 須設(shè)置為 WM_CLIPSIBLINGS 和 WM_CLIPCHILDREN 風(fēng)格。 定義了頂點(diǎn)以后,但在屏幕上顯示他們之前一共會(huì)發(fā)生 3中類型的變換:視圖變換,模型變換和投影變換。場景或者物體的最終外觀很大程度上取決于模型變換的應(yīng)用順序。通常,顏色緩沖區(qū)和窗口像素之間存在著一對(duì)一的對(duì)應(yīng)關(guān)系。 在將紋理數(shù)據(jù)從 BMP文件中載入到內(nèi)存之后,將其定義為一個(gè) OpenGL紋理圖,調(diào)用OpenGL中的 glTexImage()函數(shù)可以實(shí)現(xiàn),在函數(shù)被調(diào)用之后,紋理數(shù)據(jù)就會(huì)被載入并做好被使用的準(zhǔn)備,調(diào)用 glGenTexture()函數(shù)將一個(gè)名字賦給紋理對(duì)象,因?yàn)榧y理對(duì)象是用來存儲(chǔ)數(shù)據(jù)的,使其隨時(shí)準(zhǔn)備被使用。 因?yàn)?glLookAt()函數(shù)在本文飛機(jī)的漫游過程中比較重要,所以下面利用圖示的方法介紹一下 gllookat()函數(shù)的工作過程: up Eye look Z X 圖 31 視點(diǎn)各向量示意圖 glLookAt()函數(shù)中的三個(gè)主要變量 (eye,look,up)就是像上面展示的那樣,當(dāng)我們把西安科技大學(xué)畢業(yè)論文 17 eye,look,up三個(gè)參數(shù)傳遞給 glLookAt()函數(shù)的時(shí)候,函數(shù)可以自身算出新的坐標(biāo)系,也就相當(dāng)于將我們?nèi)说难劬υ趫鼍爸幸频搅硪粋€(gè)位置,因此漫游的過程也就是視點(diǎn)的變化過程,也即坐標(biāo)系不斷改變的過程。在本文中,這個(gè)實(shí)現(xiàn)過程如下: gluSphere(quadratic,MAX*50,20,20)。 為 了 繪 制 地 形 圖 , 我 們 需 要 對(duì) 于 沿 z 軸 方 向 的 每 一 行 柵 格 值 使 用GL_TRIANGLE_ATRIP。 glTexCoord2f(xtexa,ytexa2)。這是將飛機(jī)移動(dòng)到某處 } 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 然后設(shè)定鍵盤,通過鍵盤控制飛機(jī)的飛行狀態(tài),完成后我們就可以使用鍵盤是實(shí)現(xiàn)飛機(jī)的左右上下的飛行狀態(tài)。 基于 OpenGL 三維飛。當(dāng)我們按下一個(gè)按鍵的時(shí)候,就會(huì)產(chǎn)生一個(gè)相關(guān)事件,在程序中為每一個(gè)相關(guān)事件設(shè)置一個(gè)回調(diào)函數(shù)來處理這個(gè)事件。 glTexCoord2f(xtexa,ytexa)。 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 頂點(diǎn) 0 頂點(diǎn) 1 頂點(diǎn) 2 頂點(diǎn) 3 其他頂點(diǎn) 圖: 42 高程地形繪制示意圖 在對(duì)地形進(jìn)行紋理映射時(shí),每四個(gè)頂點(diǎn)就要制定一個(gè)紋理,因?yàn)榧y理的形狀是矩形,而四個(gè)頂點(diǎn)就會(huì)定義一個(gè)由兩個(gè)三角形組成的四邊形。在為天空貼紋理圖時(shí),需要知道紋理坐標(biāo),在 OpenGL中需要調(diào)用環(huán)境紋理貼圖算法,這個(gè)算法在球體表面上找到一個(gè)與被渲染的物體上的點(diǎn)具有相同正切面的點(diǎn),并且把球體上的這個(gè)點(diǎn)的顏色繪制成那個(gè)物體上對(duì)應(yīng)的點(diǎn)的顏色。Y軸和 X軸它們兩個(gè)都垂直于 Z軸, X明顯的垂直于up向量,因?yàn)?up向量一般情況下都是沿 Y軸向上的,這個(gè)向量規(guī)定了我們視點(diǎn)向上的方向,因此可以得知 X軸垂直于 up和 Z的叉積;當(dāng) X軸計(jì)算出來以后,剩下的就是 Y軸向量,它必須垂直于 X軸和 Z軸,也就是等于 X軸和 Z軸分量的叉積,得出這幾個(gè)坐標(biāo)軸分量的向量以后,就可以重新構(gòu)建坐標(biāo)系,也就是可以實(shí)現(xiàn)視點(diǎn)的移動(dòng),這就是 glLookAt()可以實(shí)現(xiàn)視點(diǎn)移動(dòng)的原理 顯示列表 這里主要是引入一個(gè)在飛行器構(gòu)建過程中特別重要的知識(shí), 就是顯示列表的概念。生成紋理名之后 ,然后使用glBindTexture()函數(shù)將此紋理對(duì)象綁定為我們將在繪制多邊形時(shí)使用的當(dāng)前紋理。也可以說,紋理就是一個(gè)函數(shù) textture(s,t),對(duì)于 s和 t在 0到 1之間的取值產(chǎn)生一個(gè)顏色或者亮度值。 投影變換 投影變換是在模型視圖變換之后應(yīng)用到物體的頂點(diǎn)之上的。因此,視覺坐標(biāo)表示一種固定的坐標(biāo)系統(tǒng)。而在 OpenGL 程序中 , 必須創(chuàng)建圖形操作描述表 ,這是 DC 中專用于 OpenGL的一種。 這 3種方法都具備了實(shí)時(shí)性,方法簡單的優(yōu)點(diǎn),但同時(shí)也存在明顯的不足,第一種方法繪制的天空效果看起來太平面化,簡單粗糙,逼近度不高。對(duì) 國內(nèi)來說,可視化仿真尤其是飛行器仿真起步較晚,不過也處于發(fā)展之中,在航空航天領(lǐng)域的可視化仿真工作,基本上還是處于使用國外的可視化仿真工具來開發(fā)應(yīng)用程序的階段,沒有達(dá)到一個(gè)相對(duì)成熟的階段,還沒有專用的可視化仿真工具,這使得可視化仿真工作始終落后于國外,因此很有必要認(rèn)真吸收國外的先進(jìn)研究成果,盡可能的掌握相關(guān)的先進(jìn)軟件,在此基礎(chǔ)上進(jìn)行創(chuàng)新研究,盡量縮短差距,推動(dòng)國內(nèi)可視化仿真技術(shù)的創(chuàng)新和長足發(fā)展。同時(shí)一個(gè)功能強(qiáng)大的,支持底層繪制和造型能力的軟件圖形函數(shù)庫,適用于所有的主流操作系統(tǒng)平臺(tái),有著廣泛的硬件支持。程序的運(yùn)行結(jié)果比較符合預(yù)期要求,對(duì)實(shí)際操縱有一定的 借鑒意義。 OpenGL 是美國高 級(jí)圖形和高性能計(jì)算機(jī)系統(tǒng)公司 ( SGI) 所開發(fā)的三維圖形庫 , 在當(dāng)前已經(jīng)成為事實(shí)上的高性能圖形和交互式視景處理的標(biāo)準(zhǔn) [2]。 OpenGL允許完全繞過 GDI, 直接和圖形硬件打交道。 場景的構(gòu)建及其特點(diǎn) 場景的構(gòu) 建 飛行器的場景主要指飛行器的飛行環(huán)境,主要包括天空,草地,光照,霧以及一些水的效果,天空的繪制主要是繪制一個(gè)半徑比較大的球 ,而其余所有的場景和模型均置于球的內(nèi)部 , 這樣在球的內(nèi)部看 , 球就類似于一個(gè)無窮大的天空。接下來應(yīng)設(shè)置渲染窗口。? (31) 為了進(jìn)行變換,我們要使用在線性代數(shù)中被稱為的齊次坐標(biāo)。從本質(zhì)上說,它只是在繪制物體之前應(yīng)用到一個(gè)虛擬物體之上的一種模型變換。我們所需要做的就是用模型視圖變換指定場景,然后應(yīng)用透視視圖。 // Close The Handle return auxDIBImageLoad(Filename)。目標(biāo)點(diǎn),視點(diǎn)方向也分別是三維坐標(biāo)量,視點(diǎn)的變化 ,相當(dāng)于我們?nèi)嗽趫鼍爸械囊苿?dòng)。由于地球是球型的,所以天空像半個(gè)球一樣
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1