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

正文內(nèi)容

基于opengl的三維飛行器程序設(shè)計與仿真_畢業(yè)論文-免費(fèi)閱讀

2025-08-10 14:25 上一頁面

下一頁面
  

【正文】 Drawplane()。 } if(nChar==VK_DOWN) { 三維場景 設(shè)置視點(diǎn)坐標(biāo) 設(shè)置目標(biāo)點(diǎn)坐標(biāo) 計算視線方向矢量 計算模型透視變換矩陣和顯示觀察圖 西安科技大學(xué)畢業(yè)論文 31 pitch += 15 / (ABS(Speed)+1)。這是實(shí)現(xiàn)飛機(jī)的側(cè)偏,在飛機(jī)轉(zhuǎn)向的過程中利用這條函數(shù)可以模擬飛機(jī)機(jī)身傾斜的效果; glRotatef(yaw,)。 然后將水的紋理圖貼上去,地面中添加水以后的效果如下: 圖 47 場景中的水 飛行器 飛行器的構(gòu)建 飛機(jī)模型的構(gòu)成方法有許多種,比較常見的兩種就是:一是用基本的圖形組合成一架飛機(jī)的大概框架,然后在上面貼上飛機(jī)紋理,模擬出真實(shí)的飛機(jī);二是利用 3DMAX生成的現(xiàn)成的飛機(jī)模型,本文中,我們使用多個三角形來生成飛 行器,具體來說就是使用多個三角形作為飛機(jī)的主體,在組建飛機(jī)的過程中,定義了一個三角形的類,每個三角形都具有法線,紋理坐標(biāo)以及頂點(diǎn),然后將每個三角形的繪制放在一個顯示列表中,通西安科技大學(xué)畢業(yè)論文 27 過調(diào)用顯示列表,對這些基本圖形的放大和縮小,位置移動和角度旋轉(zhuǎn),然后調(diào)用畫圖函數(shù)將其組建在一起,就可以形成最后的飛機(jī)模型。 glVertex3f(xrange2MAX,1,zrange2MAX)。在繪制過程中,調(diào)用兩個 for語句,分別從 x和 z開始循環(huán),每次設(shè)定固定增量,要想控制地面的大小,可以通過設(shè)定 x和 z的上限來設(shè)定,兩個循環(huán)完成后,相當(dāng)于繪制了一個碩大的棋盤,這就是網(wǎng)格法繪制地面的過程。在將所有柵格值載入內(nèi)存中之后,就會得到以指定間隔表示地形高度的一組數(shù)據(jù)點(diǎn),為了設(shè)置每個高度頂點(diǎn)之間的間隔或者距離,需要使用所謂的圖尺度比例,如果要增加每個高度數(shù)據(jù)點(diǎn)彼此之間的間隔,只需增大圖尺度比例因子的值即可。 glEnable(GL_TEXTURE_GEN_T)。由于地球是球型的,所以天空像半個球一樣籠罩在大地之上。它的方法和我們繪制基本圖形時所使用的 glBegin()和 glEnd()函數(shù)類似,它的形式是 glNewList()和 glEndList(),完成上述任務(wù)以后,最后就是顯示列表的執(zhí)行,這個過程可以使用 glCallList()函數(shù)來完成。目標(biāo)點(diǎn),視點(diǎn)方向也分別是三維坐標(biāo)量,視點(diǎn)的變化 ,相當(dāng)于我們?nèi)嗽趫鼍爸械囊苿印? 漫游的原理 在飛行器仿真中,飛行器可以在三維場景中漫游,隨著我們的移動,我們周圍的景 基于 OpenGL 三維飛行器程序設(shè)計與仿真 物也在發(fā)生變化,在 OpenGL中,物體坐標(biāo)的移動可視為物體的移動,角度的變換,可仿真視角的效果,在行走過程中,視覺的效果在 OpenGL中被模擬出來。 // Close The Handle return auxDIBImageLoad(Filename)。 當(dāng)我們將一個紋理映射應(yīng)用到表面時,需要一種方式來定義其紋理在表面的方向,為此,我們使用所謂的參數(shù)坐標(biāo),其定義為( s,t)對于常規(guī)的紋理映射來說, s,t的值處于數(shù)值 0到 1之間,就是( 0, 1)。我們所需要做的就是用模型視圖變換指定場景,然后應(yīng)用透視視圖。更為具體的說,投影變換制訂了一個完成的場景(在所有的模型變換都已經(jīng)完成之后)投影到屏幕上的最終圖像,它主要包括正投影以及透視投影, 在本文中主要利用透視投影。從本質(zhì)上說,它只是在繪制物體之前應(yīng)用到一個虛擬物體之上的一種模型變換。在默認(rèn)情況下,在透視投影中,觀察者是從原點(diǎn)向 Z軸的負(fù)方向望去。? (31) 為了進(jìn)行變換,我們要使用在線性代數(shù)中被稱為的齊次坐標(biāo)。 設(shè)置像素格式 像素格式是對 Win32 API的另一種擴(kuò)展,它指定了設(shè)備的繪圖屬性 , 包括繪圖界面的顏色表示模式、顏色位數(shù)、累積緩存區(qū)、深度緩存區(qū)和模板緩存區(qū)的位數(shù)。接下來應(yīng)設(shè)置渲染窗口。第三種方法有明顯的天頂。 場景的構(gòu)建及其特點(diǎn) 場景的構(gòu) 建 飛行器的場景主要指飛行器的飛行環(huán)境,主要包括天空,草地,光照,霧以及一些水的效果,天空的繪制主要是繪制一個半徑比較大的球 ,而其余所有的場景和模型均置于球的內(nèi)部 , 這樣在球的內(nèi)部看 , 球就類似于一個無窮大的天空。 在航空航天領(lǐng)域,可視化與仿真技術(shù)的結(jié)合 —— 飛行器可視化仿真的技術(shù)應(yīng)用越來越廣泛,作用越來越突出。 OpenGL允許完全繞過 GDI, 直接和圖形硬件打交道。而使用這些程序可以 很容易的創(chuàng)建高層的繪制和造型函數(shù)庫。 OpenGL 是美國高 級圖形和高性能計算機(jī)系統(tǒng)公司 ( SGI) 所開發(fā)的三維圖形庫 , 在當(dāng)前已經(jīng)成為事實(shí)上的高性能圖形和交互式視景處理的標(biāo)準(zhǔn) [2]。 C++。程序的運(yùn)行結(jié)果比較符合預(yù)期要求,對實(shí)際操縱有一定的 借鑒意義。三維可視化技術(shù)對于地下構(gòu)造研究十分重要 , 三維可視化模型能夠形象地表達(dá)地下構(gòu)造的“ 真實(shí)” 形態(tài)特征以及構(gòu)造要素的空間關(guān)系 , 結(jié)合三維信息處理和空間分析功能可以使地下構(gòu)造分析更為直觀、準(zhǔn)確 , 為地下構(gòu)造三維可視化研究開拓了一條現(xiàn)實(shí)的途徑。同時一個功能強(qiáng)大的,支持底層繪制和造型能力的軟件圖形函數(shù)庫,適用于所有的主流操作系統(tǒng)平臺,有著廣泛的硬件支持。準(zhǔn)確的掌握各種狀態(tài)機(jī)的含義以及他們所產(chǎn)生的效果是很重要的,因?yàn)橐粋€或者多個不正確的狀 基于 OpenGL 三維飛行器程序設(shè)計與仿真 態(tài)設(shè)置,就會導(dǎo)致意想不到的結(jié)果。對 國內(nèi)來說,可視化仿真尤其是飛行器仿真起步較晚,不過也處于發(fā)展之中,在航空航天領(lǐng)域的可視化仿真工作,基本上還是處于使用國外的可視化仿真工具來開發(fā)應(yīng)用程序的階段,沒有達(dá)到一個相對成熟的階段,還沒有專用的可視化仿真工具,這使得可視化仿真工作始終落后于國外,因此很有必要認(rèn)真吸收國外的先進(jìn)研究成果,盡可能的掌握相關(guān)的先進(jìn)軟件,在此基礎(chǔ)上進(jìn)行創(chuàng)新研究,盡量縮短差距,推動國內(nèi)可視化仿真技術(shù)的創(chuàng)新和長足發(fā)展。為了使運(yùn)動軌跡可視化更加逼真,本文首先利用 DEM 數(shù)據(jù)構(gòu)建地形模型,綁定上地形紋理數(shù)據(jù)后,便生 成基礎(chǔ)的三維戰(zhàn)場環(huán)境 。 這 3種方法都具備了實(shí)時性,方法簡單的優(yōu)點(diǎn),但同時也存在明顯的不足,第一種方法繪制的天空效果看起來太平面化,簡單粗糙,逼近度不高。 本論文研究重點(diǎn) 本文研究的重點(diǎn)主要是利用 OpenGL模擬現(xiàn)實(shí)中飛機(jī)的飛行場景以及對飛機(jī)進(jìn)行操作和控制,重點(diǎn)是各種變換的體實(shí)現(xiàn)以及場景的繪制過程,還有飛機(jī)飛行過程中的一些列控制,主要是各種相關(guān)數(shù)據(jù)的獲取,因此,本論文實(shí)際上是一系列數(shù)據(jù)的操作過程。而在 OpenGL 程序中 , 必須創(chuàng)建圖形操作描述表 ,這是 DC 中專用于 OpenGL的一種。 坐標(biāo)變換 變換允許我們移動,旋轉(zhuǎn)和操作 3D世界中的實(shí)體。因此,視覺坐標(biāo)表示一種固定的坐標(biāo)系統(tǒng)。作為總體原則,在進(jìn)行任何變換之前必須先指定視圖變換。 投影變換 投影變換是在模型視圖變換之后應(yīng)用到物體的頂點(diǎn)之上的。透視投影所顯示的場景更接近真實(shí),他的標(biāo)志性特點(diǎn)就是透視縮短,他會使遠(yuǎn)處的物體看上去比相同大小的近處物體更小一些。也可以說,紋理就是一個函數(shù) textture(s,t),對于 s和 t在 0到 1之間的取值產(chǎn)生一個顏色或者亮度值。 File Handle if (!Filename) //Make Sure A Filename Was Given { return NULL。生成紋理名之后 ,然后使用glBindTexture()函數(shù)將此紋理對象綁定為我們將在繪制多邊形時使用的當(dāng)前紋理。在 OpenGL中觀察虛擬世界的主要函數(shù) glulookAt(? ),它的主要作用是可以改變我們在場景中的觀察點(diǎn),看到前面的場景越來越近,兩邊的物體在向后退,這就是我們的觀察點(diǎn)在場景中的位置改變的結(jié)果。Y軸和 X軸它們兩個都垂直于 Z軸, X明顯的垂直于up向量,因?yàn)?up向量一般情況下都是沿 Y軸向上的,這個向量規(guī)定了我們視點(diǎn)向上的方向,因此可以得知 X軸垂直于 up和 Z的叉積;當(dāng) X軸計算出來以后,剩下的就是 Y軸向量,它必須垂直于 X軸和 Z軸,也就是等于 X軸和 Z軸分量的叉積,得出這幾個坐標(biāo)軸分量的向量以后,就可以重新構(gòu)建坐標(biāo)系,也就是可以實(shí)現(xiàn)視點(diǎn)的移動,這就是 glLookAt()可以實(shí)現(xiàn)視點(diǎn)移動的原理 顯示列表 這里主要是引入一個在飛行器構(gòu)建過程中特別重要的知識, 就是顯示列表的概念。構(gòu)成天空盒的載體是一個長方體,在它的前后左右上 5個面貼有天空遠(yuǎn)景的五幅圖片,這五幅圖片必須有一個規(guī)律,即就是: 1).圖形為 BMP位圖格式,尺寸(像素點(diǎn))為 2的 N次方( 32,64??); 2).頂圖的 4邊與前后左右圖的上 邊相連; 3).前后左右的 4幅圖必須首尾相連; 在編程的時候,按順序標(biāo)記紋理坐標(biāo)就可以構(gòu)造出所謂的天空盒,以此來模擬真實(shí)的天空。在為天空貼紋理圖時,需要知道紋理坐標(biāo),在 OpenGL中需要調(diào)用環(huán)境紋理貼圖算法,這個算法在球體表面上找到一個與被渲染的物體上的點(diǎn)具有相同正切面的點(diǎn),并且把球體上的這個點(diǎn)的顏色繪制成那個物體上對應(yīng)的點(diǎn)的顏色。本 文中的地面本身是被一個表示草地的簡單紋理所映射,同時使用了一些水的紋理來增強(qiáng)場景的真實(shí)感。 基于 OpenGL 三維飛行器程序設(shè)計與仿真 頂點(diǎn) 0 頂點(diǎn) 1 頂點(diǎn) 2 頂點(diǎn) 3 其他頂點(diǎn) 圖: 42 高程地形繪制示意圖 在對地形進(jìn)行紋理映射時,每四個頂點(diǎn)就要制定一個紋理,因?yàn)榧y理的形狀是矩形,而四個頂點(diǎn)就會定義一個由兩個三角形組成的四邊形。然后再將一個水的紋理應(yīng)用到此多邊形,使得場景更加具有真實(shí)感。 glTexCoord2f(xtexa,ytexa)。 在飛機(jī)的漫游過程中,會涉及到許多矢量數(shù)據(jù),矢量數(shù)據(jù)在飛機(jī)的旋轉(zhuǎn),視點(diǎn)的控制過程中發(fā)揮 著重要的作用,具體來說就是飛機(jī)在向左向右旋轉(zhuǎn)的過程中飛機(jī)會有右側(cè)身的效果,這時就要調(diào)用函數(shù) glRotate(r,x,y,z)來產(chǎn)生這一效果。當(dāng)我們按下一個按鍵的時候,就會產(chǎn)生一個相關(guān)事件,在程序中為每一個相關(guān)事件設(shè)置一個回調(diào)函數(shù)來處理這個事件。//減速 } 不進(jìn)行任何按鍵的操作情況下,飛機(jī)沿 z軸方向始終直線飛行,具體的控制使用 OpenGL中的平移變換來進(jìn)行,具體來說就是調(diào)用 OpenGL中的 glTranslate()來實(shí)現(xiàn),在文中具體的 控制如下: glMtrixMode(GL_MODELVIEM)。 基于 OpenGL 三維飛。 } if(nChar==VK_RIGHT) { zprot = 5/(ABS(Speed)+1)。這是將飛機(jī)移動到某處 } 基于 OpenGL 三維飛行器程序設(shè)計與仿真 然后設(shè)定鍵盤,通過鍵盤控制飛機(jī)的飛行狀態(tài),完成后我們就可以使用鍵盤是實(shí)現(xiàn)飛機(jī)的左右上下的飛行狀態(tài)。它的設(shè)置和光照的設(shè)置差不多,只不過不是同一個函數(shù)而已,設(shè)置材質(zhì)屬性的函數(shù)像下面這樣: Void glmaterialf(GLenum face ,GLenum pname, TYPE param) 其中 face指定了此材質(zhì)如何應(yīng)用到物體的多邊形,可以是前面,外面等, pname通知 OpenGL將要設(shè)置材質(zhì)的哪一個屬性,這個屬性和光照的完全一樣,最后這個參數(shù)可以是標(biāo)量,也可以是數(shù)組,這個要根據(jù)函數(shù)本身的名字來定。 glTexCoord2f(xtexa,ytexa2)。 我們將在場景中定義一個高度,以此作為其中水的海平面,可以是使用一個 if語句進(jìn)行判斷,假如某處的高度大于給定的高度值,則這塊地域無水,假如某塊的高度小于給定高度值,則這塊地域顯示水。 為 了 繪 制 地 形 圖 , 我 們 需 要 對 于 沿 z 軸 方 向 的 每 一 行 柵 格 值 使 用GL_TRIANGLE_ATRIP。 此天空完成后的大體模型如下所示: 圖 41 場景中的天空 西安科技大學(xué)畢業(yè)論文 21 地面 地面的生成 地面模型的生成 有很多的方法,究其本質(zhì)都是產(chǎn)生網(wǎng)格模型,網(wǎng)格模型都是由一些平面的塊組成的,每個塊都應(yīng)用不同的紋理,這樣每個塊只有一個單獨(dú)的法向量,但擁有其自己的紋理坐標(biāo),所以,在地面的繪制過程中,每個塊的數(shù)據(jù)可以像類似下面這樣: 1)塊頂點(diǎn)的數(shù)量; 2)塊法向的索引; 3)頂點(diǎn)索引的列表; 4)紋理坐標(biāo)索引的列表; 下面介紹幾種不同的經(jīng)常使用的地形的構(gòu)成方法: ( 1)高程地形 高程地形是指由高程柵
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1