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

正文內(nèi)容

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

  

【正文】 動(dòng)時(shí)的位置增量,位置增量增加,向前速度加快,位置增量減少,向前速度減慢,具體是通過控制飛機(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。 } if(nChar==VK_LEFT) { zprot += 5/(ABS(Speed)+1)。這是實(shí)現(xiàn)飛機(jī)的左右旋轉(zhuǎn); glRotatef(pitch,)。 接下來(lái),由于飛機(jī)是清一色的白色,不能達(dá)到真正模擬真實(shí)飛機(jī)的效果,因此我們必須使用紋理貼圖來(lái)實(shí)現(xiàn)效果,由于在繪制三角形的過程中,為每個(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(xtexa2,ytexa)。 完成后的圖像如下圖: 基于 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軸開始按列依次進(jìn)行計(jì)算,每列中每一點(diǎn)的高度值都是由其他相鄰的四點(diǎn)的高度值與步驟一中的隨機(jī)高度值相加得到; ( 3)設(shè)定條件,在每次計(jì)算的過程中,假如行數(shù)和列數(shù)的值小于給定條件值,則令行數(shù)西安科技大學(xué)畢業(yè)論文 25 和列數(shù)決定的這點(diǎn)的高度值為 0,所以接近邊緣的高度值均為每次的隨機(jī)高度; ( 4)重復(fù)以上步驟,直到所有平面點(diǎn)都被賦予高度值; 具體實(shí)現(xiàn)過程是: 地面草地的數(shù)據(jù)被存儲(chǔ)為一個(gè)二維的 265*265的點(diǎn)數(shù)組,數(shù)組中的點(diǎn)代表了 x方向上的 255個(gè)四邊形和 y方向上的 255個(gè)四邊形,在程序中,為這些四邊形指定紋理坐標(biāo),從而使草地的紋理能正確的被顯示出來(lái) .在本文中,繪制地面的過程如下: 繪制完成后的地面總體模型如下: 圖 46 三角帶法生成的地面 地面中的水 為了完成這部分的內(nèi)容,我們想想象一下水在自然界中是什么樣子的,海平面的定義就是地球上海洋的平均高度。 在為每個(gè)柵格位置指定頂點(diǎn)坐標(biāo)時(shí),需要基于正在設(shè)置的坐標(biāo)分量而將其柵格位置索引與圖尺度比例因子相乘,例如,當(dāng)定義了一個(gè)頂點(diǎn)的 x軸坐標(biāo)分量時(shí),就要先取得其沿軸的柵格位置并將其與尺度比例因子相乘。 這些函數(shù),同時(shí)需要指定( s,t)坐標(biāo),這個(gè)生成坐標(biāo)的過程可以由 GL_SPHERE_MAP紋理函數(shù)來(lái)完成,它的計(jì)算過程如下: (1)u是從原點(diǎn)指向頂點(diǎn)的單位向量(在視覺坐標(biāo)中); (2)n’ 是當(dāng)前法線向量,在變換為視覺坐標(biāo)之后; (3)r是反射向量( x,y,z) ,它是通過 u2n’ n’ u這個(gè)公式計(jì)算的。在用計(jì)算機(jī)仿真 3D天空時(shí),半球型天空模型顯然符合真實(shí)世界的天空模型。由于創(chuàng)建一個(gè)顯示列表需要為其分配內(nèi)存,因此當(dāng)不在使用換一個(gè)顯示列表的時(shí)候,可以直接將其銷毀以防止內(nèi)存泄露。目標(biāo)點(diǎn)的移動(dòng),相當(dāng)于我們?nèi)苏局欢?,頭或手中的相機(jī)上下左右移動(dòng)的效果。 在人對(duì)世界的綜合視覺觀察效果,是來(lái)源于我們的眼睛。 // Load The Bitmap And Return A Pointer } return NULL。對(duì)于所要進(jìn)行紋理映射的表面,其上的坐標(biāo)的最大值和最小值決定了紋理映射的范圍,改變這些值就可以產(chǎn)生各種不同的紋理映射效果。 視區(qū)變換 視口變換:當(dāng)上面的操作全部完成以后,最后所獲得的是場(chǎng)景的而為投影,將被投影到屏幕上的某個(gè)窗口 。在正投影中,屏幕上所繪制的所有多邊形都按照指定的相對(duì)大小出現(xiàn)。 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 模型變換 模型變換用于對(duì)模型以及模型內(nèi)部的特定物體進(jìn)行操縱。這個(gè)觀察點(diǎn)系相對(duì)于視覺坐標(biāo)系統(tǒng)進(jìn)行移動(dòng),以提供一個(gè)特定的拍攝點(diǎn)。 首先說(shuō) OpenGL中的平移:要對(duì)一個(gè)點(diǎn)進(jìn)行平移變換,只需要將每個(gè)坐標(biāo)軸的增量值加上要平移的點(diǎn)的原始坐標(biāo)就行了 。每個(gè) OpenGL 顯示設(shè)備都支持某一特定的像素格式。OpenGL 的渲染處理完全不同于 Windows 的圖形設(shè)備接口 GDI。 本文在研究了前人仿真天空算法的基礎(chǔ)上,提 出了一種更加簡(jiǎn)單實(shí)用的仿真 3D天空的方法,地球是球型的,所以天空像半個(gè)球一樣籠罩在大地之上。完成后經(jīng)過紋理映射使場(chǎng)景看起來(lái)更加貼近現(xiàn)實(shí)。在航天任務(wù)選擇階段,研究人員需要進(jìn)行大量的軌道計(jì)算,而在航天發(fā)射和航天任務(wù)的執(zhí)行過程中,需要對(duì)航天工具以及航天器進(jìn)行導(dǎo)航,定位,上述工作中,都會(huì)產(chǎn) 生大量的有關(guān)飛行狀態(tài)的數(shù)據(jù),將這些抽象的數(shù)據(jù)在屏幕上表現(xiàn)出來(lái),對(duì)航天任務(wù)的分析和論證,以及發(fā)射和運(yùn)行方案的選擇,都是極其重要的。 OpenGL實(shí)用庫(kù) (GLU)是 OpenGL的補(bǔ)充,它提供了更高一層的函數(shù), GLU的功能廣泛,既有 OpenGL函數(shù)的簡(jiǎn)單封裝,也有能支持高級(jí)的繪制技術(shù)的復(fù)雜組件。 OpenGL是幾百個(gè)能夠訪問圖形硬件所有性能的函數(shù)的集合。 OpenGL是一個(gè)獨(dú)立的工作平臺(tái) , 用它編寫的程序可以在不同的硬件平臺(tái) (如工作站或個(gè)人微機(jī) )中使用 , 也可以在多種操作系統(tǒng) (如 Windows 系列、 OS/2 等 )下運(yùn)行。 aircraft。文章使用紋理貼圖的方法實(shí)現(xiàn)了對(duì)天空和地面的模擬,用多邊形組成了飛機(jī),使用鍵盤來(lái)實(shí)現(xiàn)對(duì)飛機(jī)的操作,同時(shí)添加了霧以及光照來(lái)增加場(chǎng)景的真實(shí)感。三維可視化是指以適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)建立地下特征的數(shù)學(xué)模型 ,采用計(jì)算機(jī)圖形技術(shù)將數(shù)學(xué)描述以 3D 真實(shí)感圖像的形式予以表現(xiàn)。 OpenGL的根本目的是為硬件加速的 3D繪制而設(shè)計(jì)的,為程序員提供了一個(gè)圖形硬件接口。在繪制時(shí),狀態(tài)機(jī)的當(dāng)前設(shè)置決定了每一個(gè)將被顯示的對(duì)象如何被繪制。 飛行器仿真技術(shù)國(guó)內(nèi)外研究現(xiàn)狀 飛行器仿真是可視化仿真技術(shù)的一個(gè)重要分支,是航空航天技術(shù)的重要研究課題,飛行器仿真在飛行器設(shè)計(jì)、性能分析、飛行員訓(xùn)練、戰(zhàn)法分析以及國(guó)防建設(shè)中起著十分重要的作用 ,在當(dāng)今國(guó)內(nèi)外的研究中占據(jù)著重要地位。 最后利用粒子系統(tǒng)對(duì)飛行器產(chǎn)生的特殊效果,如火焰等進(jìn)行逼真顯示。 與以往實(shí)現(xiàn)方法的區(qū)別 ( 1)天空 目前對(duì)于天空的仿真還存在很多不足,一些模擬方法中存在實(shí)現(xiàn)復(fù)雜、計(jì)算耗時(shí)、圖像分辨力不高,真實(shí)感不強(qiáng)等問題,在傳統(tǒng)的 3D游戲中,對(duì)于天空的仿真,程序員往往從實(shí)時(shí)簡(jiǎn)單的角度出發(fā),采用非常簡(jiǎn)化的天空模型,通常包括以下 3種方法: 1)用一種接近天空的淡藍(lán)色來(lái)清除背景; 2)采用天空盒 (skyBox)的方法:即首先繪制一個(gè)多邊形,然后進(jìn)行立方體紋理貼圖; 3)八棱錐天空模型:定義一個(gè)天頂,以這個(gè)頂點(diǎn)為中心繪制一圈三角形扇,然后進(jìn)行紋理映射。 ( 3) 地面 在場(chǎng)景仿真中,地面也有許多種方法來(lái)進(jìn)行繪制,應(yīng)用最多的就是網(wǎng)格法,本文的地面沒有采用大多數(shù)使用的高程地形來(lái)進(jìn)行繪制,而是利用了三角形條帶的方法,利用這種方法的初衷主要是想盡可能的展示 OpenGL的一些基本功能 程序的主要功能 該程序主要是基于 OpenGL,實(shí)現(xiàn)對(duì)飛行器飛行過程的仿真,模擬現(xiàn)實(shí)過程中飛機(jī)飛行的場(chǎng)景以及對(duì)飛機(jī)進(jìn)行 具體的操作和控制 。 在 Windows98/20xx 系統(tǒng)下 , 窗口程序首先要處理設(shè)備描述表 (Device Contexts, DC), 它包括若干在窗口上如何顯示圖形的信息。建立了圖形操作描述表并初始化 PIXELFORMATDESCRIPTOR結(jié)構(gòu)后 ,下一步就是將此結(jié)構(gòu)傳遞給 ChoosePixelFormat( )函數(shù),此函數(shù)會(huì)為設(shè)備描述表選擇像素格式 , 最后調(diào)用 SetPixelFormat( )將其設(shè)置為當(dāng)前像素格式。其中一些關(guān)鍵名詞的意思如下: 視圖:指定觀察者或照相機(jī)的位置; 模型:在場(chǎng)景中移動(dòng)物體; 模型視圖:描述視圖和模型變換的對(duì)偶性; 投影:改變可視區(qū)域的大小或者重新設(shè)置它的形狀; 視口:這是一種偽變換,只是對(duì)窗口上的最終輸出進(jìn)行縮放; 視覺坐標(biāo)是進(jìn)行變換 的一個(gè)非常重要的概念,它是根據(jù)觀察者的角度而言的,與可能發(fā)生的變換無(wú)關(guān),我們可以把它看成是“絕對(duì)的”屏幕坐標(biāo)。確定視 圖變換就像是在場(chǎng)景中放置照相機(jī)病讓他指向某個(gè)方向。對(duì)于移動(dòng)和旋轉(zhuǎn),情況更是如此 。這種類型的頭型通常用于渲染二維圖像和二維圖形。 紋理映射 紋理 究其本質(zhì),紋理就是有些圖案,其范圍可能包括了從條紋和簡(jiǎn)單的形狀到自然圖案,可以是程序員自己生成的,也可以是現(xiàn)成的圖片。 紋理數(shù)據(jù)主要指的是圖像載入內(nèi)存時(shí)生成的數(shù)據(jù),它存儲(chǔ)在一個(gè)數(shù)組中,數(shù)組的專業(yè)名字稱為紋理對(duì)象,其中,圖像的數(shù)據(jù)主要通過以下程序段載入內(nèi)存而獲得的: AUX_RGBImageRec *Texture::LoadBMP(const char *Filename) // Loads A Bitmap Image { FILE *File=NULL。有了紋理對(duì)象,就可以將多個(gè)紋理一次性的載入內(nèi)存,以便場(chǎng)景繪制期間隨時(shí)引用其中的任何一個(gè)紋理。 它的基本原理是:我們?cè)谟?jì)算機(jī)屏幕上觀看圖形時(shí),我們的觀察點(diǎn)默認(rèn)為( 0, 0, 0),也就是為什么我 們總是要把圖形的 Z坐標(biāo)設(shè)為小雨 0的原因( Z大于 0時(shí)圖形在屏幕外面的)。 但是, glLookAt()是如何計(jì)算坐標(biāo)系的三個(gè)坐標(biāo)向量呢?首先,對(duì)于 Z軸可以從圖中得知,它等于 lookeye,因此 Z=lookeye。 天空的構(gòu)建 天空是飛行器場(chǎng)景中必不可少的一部分,天空模型也有許多的生成方法,下面介紹兩種常用的方法: (1)天空盒 天空盒的原理是繪制一個(gè)巨大的矩形盒子,然后在每個(gè)盒子的表面貼上天空紋理的圖片,所謂的天空盒就是用一矩形方盒作為天空遠(yuǎn)景貼圖的載體。 這個(gè)球的半徑是 MAX*50,設(shè)置的參數(shù)盡量大是因?yàn)橐耆ㄆ渌麍?chǎng)景中的模型,另外兩個(gè)參數(shù) 20是指兩個(gè) 20定義了球圍繞和沿著 z軸應(yīng)細(xì)分的份數(shù),分別類似于地球的經(jīng)線和緯線; 天空繪制完成以后,給球體貼上天空的紋理,就構(gòu)造出真實(shí)的天空?qǐng)鼍?。?dāng)在屏幕上將所有的這些高度值都繪制完成之后,就會(huì)得到一個(gè)代表著場(chǎng)景地形的網(wǎng)格。由于我們將使用這種方法繪制地形,所以必須以一定的順序來(lái)設(shè)定頂點(diǎn),以使得可以正確的進(jìn)行繪制,基 本上應(yīng)該從柵格行的一端開始,沿著 x軸正方向移動(dòng),按 z字形路線模式繪制頂點(diǎn),同時(shí)為了進(jìn)行正確的紋理映射,需要每次向 OpenGL傳遞四個(gè)頂點(diǎn),當(dāng)?shù)竭_(dá)一行的另一端時(shí),就移到下一行用同樣的方法再進(jìn)行繪制,如此一行一行的重復(fù)直至處理完所有的行。 本文中的海明面是一個(gè)單一的多邊形,他被賦予透明的白色,以此來(lái)表示水。 glVertex3f(xrange1MAX,1,zrange2MAX)。 在文中,材質(zhì)屬性的數(shù)值設(shè)置如下,當(dāng)然,可以適當(dāng)?shù)母淖儯? 飛行器漫游 在計(jì)算機(jī) 3D圖形處理技術(shù)中,在計(jì)算機(jī)屏幕上觀看圖形時(shí),設(shè)定的觀察點(diǎn)默認(rèn)是( 0,0,0),在 OpenGL中,飛機(jī)飛 行過程中的各種變換,如翻轉(zhuǎn),轉(zhuǎn)向等都是依靠 glRotatef()西安科技大學(xué)畢業(yè)論文 29 和 glTranslatef()來(lái)實(shí)現(xiàn)的,對(duì)于我們觀察飛行場(chǎng)景的視點(diǎn),也就是可以產(chǎn)生在場(chǎng)景中漫游效果則是利用 glLookAt()函數(shù)來(lái)完成的,它們的主要作用是可以改變我們?cè)?OpenGL中的觀察點(diǎn),這個(gè)觀察點(diǎn)就好像是我們的眼睛,也好像是我們平時(shí)所用的攝像機(jī),飛機(jī)向前飛行,看到前面的景物越來(lái)越近,兩邊的景物在向后退,這就是我們的觀察點(diǎn)在場(chǎng)景中位置改變的結(jié)果。它的基本流程如下: 圖 410 控制流程圖 飛行器的控制 交互式應(yīng) 用程序富有成效的和激動(dòng)人心的性質(zhì)之一就是用戶可以用人類自然的動(dòng)作(如用鼠標(biāo)指示和單擊鼠標(biāo),按下鍵盤的不同的按鍵等)來(lái)控制程序的流程,按下鍵盤時(shí),對(duì)于每個(gè)鍵對(duì)于應(yīng)用程序都是有用的,需要被恰當(dāng)?shù)奶幚怼? Throttle*=.
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1