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

正文內(nèi)容

基于opengl的三維飛行器程序設(shè)計(jì)與仿真_畢業(yè)論文(編輯修改稿)

2025-08-15 14:25 本頁面
 

【文章內(nèi)容簡介】 方法,利用這種方法的初衷主要是想盡可能的展示 OpenGL的一些基本功能 程序的主要功能 該程序主要是基于 OpenGL,實(shí)現(xiàn)對(duì)飛行器飛行過程的仿真,模擬現(xiàn)實(shí)過程中飛機(jī)飛行的場(chǎng)景以及對(duì)飛機(jī)進(jìn)行 具體的操作和控制 。 本論文研究重點(diǎn) 本文研究的重點(diǎn)主要是利用 OpenGL模擬現(xiàn)實(shí)中飛機(jī)的飛行場(chǎng)景以及對(duì)飛機(jī)進(jìn)行操作和控制,重點(diǎn)是各種變換的體實(shí)現(xiàn)以及場(chǎng)景的繪制過程,還有飛機(jī)飛行過程中的一些列控制,主要是各種相關(guān)數(shù)據(jù)的獲取,因此,本論文實(shí)際上是一系列數(shù)據(jù)的操作過程。 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 3. 程序涉及知識(shí)詳解 基本框架 構(gòu)建應(yīng)用程序框架 應(yīng)用 Visual C++ 建立一個(gè)基于 MFC 的應(yīng)用程序框架 , 并將 VC 庫文件、 和 。同時(shí)還要修改工程 中的相關(guān)參數(shù) ,即將 _CONLOLE改為 _WINDOWS,在 link項(xiàng),在對(duì)象、模塊欄的前面加上 OpenGL 函數(shù)庫的調(diào)用有效。接下來應(yīng)設(shè)置渲染窗口。OpenGL 的渲染處理完全不同于 Windows 的圖形設(shè)備接口 GDI。要使 Windows 的窗口格式為 OpenGL 所接受 ,需進(jìn)行下面的其他設(shè)置。 建立圖形操作描述表 OpenGL 作圖窗口必 須設(shè)置為 WM_CLIPSIBLINGS 和 WM_CLIPCHILDREN 風(fēng)格。 在 Windows98/20xx 系統(tǒng)下 , 窗口程序首先要處理設(shè)備描述表 (Device Contexts, DC), 它包括若干在窗口上如何顯示圖形的信息。而在 OpenGL 程序中 , 必須創(chuàng)建圖形操作描述表 ,這是 DC 中專用于 OpenGL的一種。但是 RC 不同于其他的 DC, 它只需要一個(gè)句柄就可以任意調(diào)用 OpenGL 函數(shù) , 而其他 DC 調(diào)用每個(gè) GDI 函數(shù)時(shí)都需要一個(gè)句柄。使用時(shí)先通過 wglCreateContext ( ) 函數(shù)創(chuàng)建一個(gè) RC,然后調(diào)用 wglMakeCurrent ( ) 函數(shù)啟動(dòng)它 , 就可在所定義的窗口內(nèi)調(diào)用 OpenGL 函數(shù)繪制飛行器了。 設(shè)置像素格式 像素格式是對(duì) Win32 API的另一種擴(kuò)展,它指定了設(shè)備的繪圖屬性 , 包括繪圖界面的顏色表示模式、顏色位數(shù)、累積緩存區(qū)、深度緩存區(qū)和模板緩存區(qū)的位數(shù)。每個(gè) OpenGL 顯示設(shè)備都支持某一特定的像素格式。在繪制創(chuàng)建環(huán)境之前,像素格式必須被設(shè)置和創(chuàng)建。像素格式用 PIXELFORMATDESCRIPTOR 結(jié)構(gòu)來表示 , 通過設(shè)置這一結(jié)構(gòu)的成員值使 之支持 OpenGL。建立了圖形操作描述表并初始化 PIXELFORMATDESCRIPTOR結(jié)構(gòu)后 ,下一步就是將此結(jié)構(gòu)傳遞給 ChoosePixelFormat( )函數(shù),此函數(shù)會(huì)為設(shè)備描述表選擇像素格式 , 最后調(diào)用 SetPixelFormat( )將其設(shè)置為當(dāng)前像素格式。 坐標(biāo)變換 變換允許我們移動(dòng),旋轉(zhuǎn)和操作 3D世界中的實(shí)體。在介紹其他坐標(biāo)變換之前,先說OpenGL中兩個(gè)基本的變換,這兩個(gè)變換在其他變換中起著重要的作用,是其他的變換的基礎(chǔ)。為了進(jìn)行變換,基本就是用變換矩陣乘以想要變換的點(diǎn),得到的結(jié)果 就是變換過的新的點(diǎn),比如有一個(gè)點(diǎn) P和變換矩陣 M,那么為了用變換矩陣 M來變換點(diǎn) P,從而得到結(jié)西安科技大學(xué)畢業(yè)論文 11 果點(diǎn) P’,應(yīng)該像下面這樣做 : PMP *39。? (31) 為了進(jìn)行變換,我們要使用在線性代數(shù)中被稱為的齊次坐標(biāo)。 首先說 OpenGL中的平移:要對(duì)一個(gè)點(diǎn)進(jìn)行平移變換,只需要將每個(gè)坐標(biāo)軸的增量值加上要平移的點(diǎn)的原始坐標(biāo)就行了 。也就是一些列點(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ì)算過程全部類似于上面的處理過程。 定義了頂點(diǎn)以后,但在屏幕上顯示他們之前一共會(huì)發(fā)生 3中類型的變換:視圖變換,模型變換和投影變換。其中一些關(guān)鍵名詞的意思如下: 視圖:指定觀察者或照相機(jī)的位置; 模型:在場(chǎng)景中移動(dòng)物體; 模型視圖:描述視圖和模型變換的對(duì)偶性; 投影:改變可視區(qū)域的大小或者重新設(shè)置它的形狀; 視口:這是一種偽變換,只是對(duì)窗口上的最終輸出進(jìn)行縮放; 視覺坐標(biāo)是進(jìn)行變換 的一個(gè)非常重要的概念,它是根據(jù)觀察者的角度而言的,與可能發(fā)生的變換無關(guān),我們可以把它看成是“絕對(duì)的”屏幕坐標(biāo)。因此,視覺坐標(biāo)表示一種固定的坐標(biāo)系統(tǒng)。 視圖變換 視圖變換是場(chǎng)景所應(yīng)用的第一個(gè)變換。它用于確定場(chǎng)景的拍攝點(diǎn)。在默認(rèn)情況下,在透視投影中,觀察者是從原點(diǎn)向 Z軸的負(fù)方向望去。這個(gè)觀察點(diǎn)系相對(duì)于視覺坐標(biāo)系統(tǒng)進(jìn)行移動(dòng),以提供一個(gè)特定的拍攝點(diǎn)。當(dāng)觀察點(diǎn)位于原點(diǎn)時(shí),場(chǎng)景中所繪制的 Z值為正的物體就位于觀察者的后面。視圖變換允許把觀察點(diǎn)放在自己所希望的任何位置,并允許在任何方向上觀察場(chǎng)景。確定視 圖變換就像是在場(chǎng)景中放置照相機(jī)病讓他指向某個(gè)方向。作為總體原則,在進(jìn)行任何變換之前必須先指定視圖變換。原因是視圖變換的效果相當(dāng)于根據(jù)視覺坐標(biāo)系統(tǒng)移動(dòng)當(dāng)前所使用的坐標(biāo)系統(tǒng)。然后,根據(jù)最新修改的坐標(biāo)系統(tǒng)進(jìn)行其他所有的后續(xù)變換。從本質(zhì)上說,它只是在繪制物體之前應(yīng)用到一個(gè)虛擬物體之上的一種模型變換。 基于 OpenGL 三維飛行器程序設(shè)計(jì)與仿真 模型變換 模型變換用于對(duì)模型以及模型內(nèi)部的特定物體進(jìn)行操縱。它可以移動(dòng)物體,對(duì)它們進(jìn)行旋轉(zhuǎn),或者對(duì)它們進(jìn)行縮放。場(chǎng)景或者物體的最終外觀很大程度上取決于模型變換的應(yīng)用順序。對(duì)于移動(dòng)和旋轉(zhuǎn),情況更是如此 。 投影變換 投影變換是在模型視圖變換之后應(yīng)用到物體的頂點(diǎn)之上的。這種投影世紀(jì)定義了可視區(qū)域,并建立裁剪平面。裁剪平面是 3D空間的平面方程式, OpenGL用它來確定幾何圖形能否被觀察者所看到。更為具體的說,投影變換制訂了一個(gè)完成的場(chǎng)景(在所有的模型變換都已經(jīng)完成之后)投影到屏幕上的最終圖像,它主要包括正投影以及透視投影, 在本文中主要利用透視投影。在正投影中,屏幕上所繪制的所有多邊形都按照指定的相對(duì)大小出現(xiàn)。直線和多邊形使用平行線直接映射到 2D屏幕上。這意味著不管物體有多遠(yuǎn),都仍然 按照相同的大小進(jìn)行繪制,平面的出現(xiàn)屏幕上。這種類型的頭型通常用于渲染二維圖像和二維圖形。透視投影所顯示的場(chǎng)景更接近真實(shí),他的標(biāo)志性特點(diǎn)就是透視縮短,他會(huì)使遠(yuǎn)處的物體看上去比相同大小的近處物體更小一些。 3D空間中平行的直線在觀察者眼里并不總是平行的。透視投影的優(yōu)點(diǎn)是不必判斷直線將在什么地方交匯,也不必操心遠(yuǎn)處的物體是如何變小的。我們所需要做的就是用模型視圖變換指定場(chǎng)景,然后應(yīng)用透視視圖。 視區(qū)變換 視口變換:當(dāng)上面的操作全部完成以后,最后所獲得的是場(chǎng)景的而為投影,將被投影到屏幕上的某個(gè)窗口 。這種到窗口坐標(biāo)的映射是最后一個(gè)完成的變換,成為視口變換。通常,顏色緩沖區(qū)和窗口像素之間存在著一對(duì)一的對(duì)應(yīng)關(guān)系。 紋理映射 紋理 究其本質(zhì),紋理就是有些圖案,其范圍可能包括了從條紋和簡單的形狀到自然圖案,可以是程序員自己生成的,也可以是現(xiàn)成的圖片。也可以說,紋理就是一個(gè)函數(shù) textture(s,t),對(duì)于 s和 t在 0到 1之間的取值產(chǎn)生一個(gè)顏色或者亮度值。在本文的仿真中,紋理圖案使用的是現(xiàn)成的圖片。紋理可以是 2D, 3D, 4D紋理等,但我們文中使用的是 2D紋理,它通常是從圖像或者圖片文 件中載入的,文中使用的是從一幅 256*256的現(xiàn)成圖片中載入紋理數(shù)據(jù),它是在程序運(yùn)行是才生成紋理。 當(dāng)我們將一個(gè)紋理映射應(yīng)用到表面時(shí),需要一種方式來定義其紋理在表面的方向,為此,我們使用所謂的參數(shù)坐標(biāo),其定義為( s,t)對(duì)于常規(guī)的紋理映射來說, s,t的值處于數(shù)值 0到 1之間,就是( 0, 1)。對(duì)于所要進(jìn)行紋理映射的表面,其上的坐標(biāo)的最大值和最小值決定了紋理映射的范圍,改變這些值就可以產(chǎn)生各種不同的紋理映射效果。 西安科技大學(xué)畢業(yè)論文 15 紋理數(shù)據(jù) 紋理數(shù)據(jù)在本次仿真設(shè)計(jì)中占有很重要的位置,紋理數(shù)據(jù)包括圖像的數(shù) 據(jù)以及紋理如何應(yīng)用到具體的模型上去,這就涉及一個(gè)紋理坐標(biāo)的問題。草地,天空,飛行器都使用紋理貼圖來增加圖形的真實(shí)感。 紋理數(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。 File Handle if (!Filename) //Make Sure A Filename Was Given { return NULL。 // If Not Return NULL } File=fopen(Filename,r)。 // Check To See If The File Exists if (File) Does The File Exist? { fclose(File)。 // Close The Handle return auxDIBImageLoad(Filename)。 // Load The Bitmap And Return A Pointer } return NULL
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1