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

正文內(nèi)容

基于opengl的三維飛行器程序設(shè)計(jì)與仿真_畢業(yè)論文-全文預(yù)覽

  

【正文】 于給定的高度值,則這塊地域無(wú)水,假如某塊的高度小于給定高度值,則這塊地域顯示水。 glTexCoord2f(xtexa2,ytexa2)。 glTexCoord2f(xtexa,ytexa2)。 glEnd()。它的設(shè)置和光照的設(shè)置差不多,只不過(guò)不是同一個(gè)函數(shù)而已,設(shè)置材質(zhì)屬性的函數(shù)像下面這樣: Void glmaterialf(GLenum face ,GLenum pname, TYPE param) 其中 face指定了此材質(zhì)如何應(yīng)用到物體的多邊形,可以是前面,外面等, pname通知 OpenGL將要設(shè)置材質(zhì)的哪一個(gè)屬性,這個(gè)屬性和光照的完全一樣,最后這個(gè)參數(shù)可以是標(biāo)量,也可以是數(shù)組,這個(gè)要根據(jù)函數(shù)本身的名字來(lái)定。 在本文中,將視點(diǎn)的位置設(shè)在飛機(jī)上,視點(diǎn)將隨飛機(jī)的移 動(dòng)而移動(dòng)和旋轉(zhuǎn),飛機(jī)的方向是由俯仰,偏動(dòng)還側(cè)偏來(lái)實(shí)現(xiàn)的,也就是相當(dāng)于飛機(jī)的旋轉(zhuǎn)角度,相應(yīng)的程序如下: void planeview( GLfloat planeX,GLfloat ploatY,GLfloatZ,GLfloat roll,GLfloat pitch,GLfloat yaw) { glRotatef(roll,)。這是將飛機(jī)移動(dòng)到某處 } 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 然后設(shè)定鍵盤,通過(guò)鍵盤控制飛機(jī)的飛行狀態(tài),完成后我們就可以使用鍵盤是實(shí)現(xiàn)飛機(jī)的左右上下的飛行狀態(tài)。這樣我們就可以簡(jiǎn)單方便的操作鍵盤,在文中主要運(yùn)用了一下幾個(gè)按鍵,方向鍵上下左右分別控制飛機(jī)的上下左右飛行,具體實(shí)現(xiàn)如下: if(nChar==VK_UP) { pitch = 15 / (ABS(Speed)+1)。 } if(nChar==VK_RIGHT) { zprot = 5/(ABS(Speed)+1)。 glTranstratef(,_throttle)。 基于 OpenGL 三維飛。 同時(shí),飛機(jī)可以實(shí)現(xiàn)加速和減速,飛機(jī)的加速和減速實(shí)際上就是向前移動(dòng)時(shí)的位置增量,位置增量增加,向前速度加快,位置增量減少,向前速度減慢,具體是通過(guò)控制飛機(jī)的加減速因子來(lái)實(shí)現(xiàn)的,就是調(diào)用一個(gè)簡(jiǎn)單的 if語(yǔ)句來(lái)進(jìn)行控制: If(nchar=VK_UP) Throttle*=.99 Speed=speed*4。//減速 } 不進(jìn)行任何按鍵的操作情況下,飛機(jī)沿 z軸方向始終直線飛行,具體的控制使用 OpenGL中的平移變換來(lái)進(jìn)行,具體來(lái)說(shuō)就是調(diào)用 OpenGL中的 glTranslate()來(lái)實(shí)現(xiàn),在文中具體的 控制如下: glMtrixMode(GL_MODELVIEM)。 } if(nChar==VK_LEFT) { zprot += 5/(ABS(Speed)+1)。當(dāng)我們按下一個(gè)按鍵的時(shí)候,就會(huì)產(chǎn)生一個(gè)相關(guān)事件,在程序中為每一個(gè)相關(guān)事件設(shè)置一個(gè)回調(diào)函數(shù)來(lái)處理這個(gè)事件。這是實(shí)現(xiàn)飛機(jī)的左右旋轉(zhuǎn); glRotatef(pitch,)。 在飛機(jī)的漫游過(guò)程中,會(huì)涉及到許多矢量數(shù)據(jù),矢量數(shù)據(jù)在飛機(jī)的旋轉(zhuǎn),視點(diǎn)的控制過(guò)程中發(fā)揮 著重要的作用,具體來(lái)說(shuō)就是飛機(jī)在向左向右旋轉(zhuǎn)的過(guò)程中飛機(jī)會(huì)有右側(cè)身的效果,這時(shí)就要調(diào)用函數(shù) glRotate(r,x,y,z)來(lái)產(chǎn)生這一效果。 接下來(lái),由于飛機(jī)是清一色的白色,不能達(dá)到真正模擬真實(shí)飛機(jī)的效果,因此我們必須使用紋理貼圖來(lái)實(shí)現(xiàn)效果,由于在繪制三角形的過(guò)程中,為每個(gè)三角形都定義了紋理坐標(biāo),所以只需要將飛機(jī)外表圖片文件讀到內(nèi)存中,然后利用紋 理貼圖的一些函數(shù)將飛機(jī)紋理貼到生成的飛機(jī)模型上,這樣就可以構(gòu)造出真實(shí)的飛機(jī),飛行器模型如下圖: 正面: 圖 48 飛機(jī)的正面 反面: 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 圖 49 飛機(jī)的反面 材質(zhì)屬性的設(shè)置 對(duì)飛行器的出來(lái)還包括為其設(shè)置材料屬性,這些屬性決定了飛機(jī)材質(zhì)反射相應(yīng)的光分量的程度, OpenGL根據(jù)材質(zhì)對(duì)紅綠藍(lán)光的反射來(lái)近似模擬材質(zhì)顏色。 glTexCoord2f(xtexa,ytexa)。 glTexCoord2f(xtexa2,ytexa)。然后再將一個(gè)水的紋理應(yīng)用到此多邊形,使得場(chǎng)景更加具有真實(shí)感。 完成后的圖像如下圖: 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 圖 45 網(wǎng)格法生成的地面 (3)三角形條帶法 在 OpenGL中有一種繪制圖形的方法,叫做 GL_TRANGLES_LINES,即就是本文中一直采用的繪制三角形條帶模式 ,本文中采用的就是一種最基本的網(wǎng)格法,即就是利用OpenGL的劃線函數(shù)畫出一個(gè)類似網(wǎng)格的平面圖,然后利用地面的構(gòu)成算法來(lái)隨機(jī)產(chǎn)生山的地面起伏高度,最終就可以產(chǎn)生隨機(jī)起伏的地面 地面的高度數(shù)據(jù)是利用下面的公式計(jì)算的: )44()1,1()1,1(),1()1,1(.)1,1(5075151( ) %.),(??????????????????f i e l djif i e l djif i e l djif i e l djif i e l dyjif i e l dr a n dyjif i e l d 用數(shù)學(xué)術(shù)語(yǔ)表述就是: ( 1)用兩個(gè) for循環(huán)分別控制 x和 z分量,每次給定一個(gè)隨機(jī)的高度; ( 2)從 z軸開(kāi)始按列依次進(jìn)行計(jì)算,每列中每一點(diǎn)的高度值都是由其他相鄰的四點(diǎn)的高度值與步驟一中的隨機(jī)高度值相加得到; ( 3)設(shè)定條件,在每次計(jì)算的過(guò)程中,假如行數(shù)和列數(shù)的值小于給定條件值,則令行數(shù)西安科技大學(xué)畢業(yè)論文 25 和列數(shù)決定的這點(diǎn)的高度值為 0,所以接近邊緣的高度值均為每次的隨機(jī)高度; ( 4)重復(fù)以上步驟,直到所有平面點(diǎn)都被賦予高度值; 具體實(shí)現(xiàn)過(guò)程是: 地面草地的數(shù)據(jù)被存儲(chǔ)為一個(gè)二維的 265*265的點(diǎn)數(shù)組,數(shù)組中的點(diǎn)代表了 x方向上的 255個(gè)四邊形和 y方向上的 255個(gè)四邊形,在程序中,為這些四邊形指定紋理坐標(biāo),從而使草地的紋理能正確的被顯示出來(lái) .在本文中,繪制地面的過(guò)程如下: 繪制完成后的地面總體模型如下: 圖 46 三角帶法生成的地面 地面中的水 為了完成這部分的內(nèi)容,我們想想象一下水在自然界中是什么樣子的,海平面的定義就是地球上海洋的平均高度。 基于 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è)三角形組成的四邊形。 在為每個(gè)柵格位置指定頂點(diǎn)坐標(biāo)時(shí),需要基于正在設(shè)置的坐標(biāo)分量而將其柵格位置索引與圖尺度比例因子相乘,例如,當(dāng)定義了一個(gè)頂點(diǎn)的 x軸坐標(biāo)分量時(shí),就要先取得其沿軸的柵格位置并將其與尺度比例因子相乘。本 文中的地面本身是被一個(gè)表示草地的簡(jiǎn)單紋理所映射,同時(shí)使用了一些水的紋理來(lái)增強(qiáng)場(chǎng)景的真實(shí)感。 這些函數(shù),同時(shí)需要指定( s,t)坐標(biāo),這個(gè)生成坐標(biāo)的過(guò)程可以由 GL_SPHERE_MAP紋理函數(shù)來(lái)完成,它的計(jì)算過(guò)程如下: (1)u是從原點(diǎn)指向頂點(diǎn)的單位向量(在視覺(jué)坐標(biāo)中); (2)n’ 是當(dāng)前法線向量,在變換為視覺(jué)坐標(biāo)之后; (3)r是反射向量( x,y,z) ,它是通過(guò) u2n’ n’ u這個(gè)公式計(jì)算的。在為天空貼紋理圖時(shí),需要知道紋理坐標(biāo),在 OpenGL中需要調(diào)用環(huán)境紋理貼圖算法,這個(gè)算法在球體表面上找到一個(gè)與被渲染的物體上的點(diǎn)具有相同正切面的點(diǎn),并且把球體上的這個(gè)點(diǎn)的顏色繪制成那個(gè)物體上對(duì)應(yīng)的點(diǎn)的顏色。在用計(jì)算機(jī)仿真 3D天空時(shí),半球型天空模型顯然符合真實(shí)世界的天空模型。構(gòu)成天空盒的載體是一個(gè)長(zhǎng)方體,在它的前后左右上 5個(gè)面貼有天空遠(yuǎn)景的五幅圖片,這五幅圖片必須有一個(gè)規(guī)律,即就是: 1).圖形為 BMP位圖格式,尺寸(像素點(diǎn))為 2的 N次方( 32,64??); 2).頂圖的 4邊與前后左右圖的上 邊相連; 3).前后左右的 4幅圖必須首尾相連; 在編程的時(shí)候,按順序標(biāo)記紋理坐標(biāo)就可以構(gòu)造出所謂的天空盒,以此來(lái)模擬真實(shí)的天空。由于創(chuàng)建一個(gè)顯示列表需要為其分配內(nèi)存,因此當(dāng)不在使用換一個(gè)顯示列表的時(shí)候,可以直接將其銷毀以防止內(nèi)存泄露。Y軸和 X軸它們兩個(gè)都垂直于 Z軸, X明顯的垂直于up向量,因?yàn)?up向量一般情況下都是沿 Y軸向上的,這個(gè)向量規(guī)定了我們視點(diǎn)向上的方向,因此可以得知 X軸垂直于 up和 Z的叉積;當(dāng) X軸計(jì)算出來(lái)以后,剩下的就是 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)建過(guò)程中特別重要的知識(shí), 就是顯示列表的概念。目標(biāo)點(diǎn)的移動(dòng),相當(dāng)于我們?nèi)苏局欢?,頭或手中的相機(jī)上下左右移動(dòng)的效果。在 OpenGL中觀察虛擬世界的主要函數(shù) glulookAt(? ),它的主要作用是可以改變我們?cè)趫?chǎng)景中的觀察點(diǎn),看到前面的場(chǎng)景越來(lái)越近,兩邊的物體在向后退,這就是我們的觀察點(diǎn)在場(chǎng)景中的位置改變的結(jié)果。 在人對(duì)世界的綜合視覺(jué)觀察效果,是來(lái)源于我們的眼睛。生成紋理名之后 ,然后使用glBindTexture()函數(shù)將此紋理對(duì)象綁定為我們將在繪制多邊形時(shí)使用的當(dāng)前紋理。 // Load The Bitmap And Return A Pointer } return NULL。 File Handle if (!Filename) //Make Sure A Filename Was Given { return NULL。對(duì)于所要進(jìn)行紋理映射的表面,其上的坐標(biāo)的最大值和最小值決定了紋理映射的范圍,改變這些值就可以產(chǎn)生各種不同的紋理映射效果。也可以說(shuō),紋理就是一個(gè)函數(shù) textture(s,t),對(duì)于 s和 t在 0到 1之間的取值產(chǎn)生一個(gè)顏色或者亮度值。 視區(qū)變換 視口變換:當(dāng)上面的操作全部完成以后,最后所獲得的是場(chǎng)景的而為投影,將被投影到屏幕上的某個(gè)窗口 。透視投影所顯示的場(chǎng)景更接近真實(shí),他的標(biāo)志性特點(diǎn)就是透視縮短,他會(huì)使遠(yuǎn)處的物體看上去比相同大小的近處物體更小一些。在正投影中,屏幕上所繪制的所有多邊形都按照指定的相對(duì)大小出現(xiàn)。 投影變換 投影變換是在模型視圖變換之后應(yīng)用到物體的頂點(diǎn)之上的。 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 模型變換 模型變換用于對(duì)模型以及模型內(nèi)部的特定物體進(jìn)行操縱。作為總體原則,在進(jìn)行任何變換之前必須先指定視圖變換。這個(gè)觀察點(diǎn)系相對(duì)于視覺(jué)坐標(biāo)系統(tǒng)進(jìn)行移動(dòng),以提供一個(gè)特定的拍攝點(diǎn)。因此,視覺(jué)坐標(biāo)表示一種固定的坐標(biāo)系統(tǒng)。 首先說(shuō) OpenGL中的平移:要對(duì)一個(gè)點(diǎn)進(jìn)行平移變換,只需要將每個(gè)坐標(biāo)軸的增量值加上要平移的點(diǎn)的原始坐標(biāo)就行了 。 坐標(biāo)變換 變換允許我們移動(dòng),旋轉(zhuǎn)和操作 3D世界中的實(shí)體。每個(gè) OpenGL 顯示設(shè)備都支持某一特定的像素格式。而在 OpenGL 程序中 , 必須創(chuàng)建圖形操作描述表 ,這是 DC 中專用于 OpenGL的一種。OpenGL 的渲染處理完全不同于 Windows 的圖形設(shè)備接口 GDI。 本論文研究重點(diǎn) 本文研究的重點(diǎn)主要是利用 OpenGL模擬現(xiàn)實(shí)中飛機(jī)的飛行場(chǎng)景以及對(duì)飛機(jī)進(jìn)行操作和控制,重點(diǎn)是各種變換的體實(shí)現(xiàn)以及場(chǎng)景的繪制過(guò)程,還有飛機(jī)飛行過(guò)程中的一些列控制,主要是各種相關(guān)數(shù)據(jù)的獲取,因此,本論文實(shí)際上是一系列數(shù)據(jù)的操作過(guò)程。 本文在研究了前人仿真天空算法的基礎(chǔ)上,提 出了一種更加簡(jiǎn)單實(shí)用的仿真 3D天空的方法,地球是球型的,所以天空像半個(gè)球一樣籠罩在大地之上。 這 3種方法都具備了實(shí)時(shí)性,方法簡(jiǎn)單的優(yōu)點(diǎn),但同時(shí)也存在明顯的不足,第一種方法繪制的天空效果看起來(lái)太平面化,簡(jiǎn)單粗糙,逼近度不高。完成后經(jīng)過(guò)紋理映射使場(chǎng)景看起來(lái)更加貼近現(xiàn)實(shí)。為了使運(yùn)動(dòng)軌跡可視化更加逼真,本文首先利用 DEM 數(shù)據(jù)構(gòu)建地形模型,綁定上地形紋理數(shù)據(jù)后,便生 成基礎(chǔ)的三維戰(zhàn)場(chǎng)環(huán)境 。在航天任務(wù)選擇階段,研究人員需要進(jìn)行大量的軌道計(jì)算,而在航天發(fā)射和航天任務(wù)的執(zhí)行過(guò)程中,需要對(duì)航天工具以及航天器進(jìn)行導(dǎo)航,定位,上述工作中,都會(huì)產(chǎn) 生大量的有關(guān)飛行狀態(tài)的數(shù)據(jù),將這些抽象的數(shù)據(jù)在屏
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1