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

正文內(nèi)容

3d飛行訓練系統(tǒng)的設計與實現(xiàn)_畢業(yè)論文-資料下載頁

2025-05-16 22:35本頁面

【導讀】論文題目:_3D飛行訓練系統(tǒng)的設計與實現(xiàn)_

  

【正文】 H 或 GL_MAX_COLOR_STACK_DEPTH。 也可以使用下列語句找到棧中現(xiàn)有多少個矩 陣: glGetIntegerv( GL_MODELVIEW_STACK_DEPTH,numMats); 開始,建模觀察棧僅包含單位矩陣,因此如果我們可以發(fā)生任何棧處理前調用該函數(shù)則返回值1。類似的符號常量可用來確定其他三個棧中的當前矩陣數(shù)。 OpenGL 有兩個函數(shù)用來處理棧中的矩陣。這些棧處理函數(shù)比單獨管理棧矩陣效率要高,尤其是在棧函數(shù)使用硬件實現(xiàn)時。例如,硬件實現(xiàn)可同時復制多個矩陣元素。而我們可以在棧中保留一個單位矩陣,從而在當前矩陣初始化時實現(xiàn)得比調用 glLoadIdentity 更快。 使用下列函數(shù),可 以復制活動棧頂當前矩陣并將其存入第二個棧位置。 glPushMatrix() 。 這給了棧頂兩個位置以雙份矩陣,另一個棧函數(shù)時 glPopMatrix() 。 它破壞棧頂矩陣,而棧的第二個矩陣成為當前矩陣。如果要“彈出”棧頂,棧內(nèi)至少要有兩個矩陣;否則就會出錯。 子程序 glMatrixMode 用來設定投影模式( projection mode),即指定將用于投影變換的矩陣。該變換確定怎樣將一個場景投影到屏幕上。同樣的子程序可用來設定幾何變換矩陣。但此時該矩陣看做建模觀察矩陣( modelview matrix)它用 于儲存和組合幾何變換。該矩陣也用于將幾何變換與向觀察坐標系的變換進行組合。建模觀察模式用下列語句指定: glMatrixMode(GL_MODELVIEW)。 該語句指定一個 4 4 建模觀察矩陣作為當前矩陣( current matrix)。前面討論的 OpenGL 變換子程序用于修改建模觀察矩陣,該矩陣用于對場景中的坐標位置進行變換。使用 glMatrixMode 函數(shù)還可以設定另外兩個模式:紋理模式( texture mode)和顏色模式( color mode)。紋理模式用于映射表面的紋理圖案,而顏色模式用于從一個顏 色模型轉換到另一個。 建立建模觀察模式(或任何其他模式)之后,調用變換子程序所生成的矩陣要與該模式的當前矩陣相乘。另外,我們可以對當前矩陣的元素賦值, OpenGL 庫中有兩個函數(shù)可用于此目的。使用下論文) 18 列函數(shù)可設定當前矩陣為單位矩陣。 glLoadIdentity()。 另外,可以使用其他值為當前矩陣的元素賦值: glLoadMatrix*( elements16)。 參數(shù) elements16 指定了一個單下標、 16 元素的浮點值數(shù)組,而后綴 f 或 d 用來指定數(shù)據(jù)類型。該數(shù)組的元素必須按列優(yōu)先次序指定。即先列出第一列的 4 個 元素,接著列出第二列的 4 個元素,然后是第三列,最后是第四列。我們用下列程序對建模觀察矩陣進行初始化,以便說明該次序。 glMatrixMode(GL_MODELVIEW)。 GLfloat elens[16]。 GLint k。 For (k=0。k16。k++) Elems[k]=float(k)。 glLoadMatrixf(elems)。 該程序生成下面的矩陣 ?????????????M () 我們也可以將指定的矩陣與當前矩陣合并: glMultMatrix*(otherElements16)。 后綴碼還是 f 或 d,而參數(shù) otherElements16 是一個按列優(yōu)先的另一個矩陣的 16 元素、單下標數(shù)組。當前矩陣以后乘方式與 glMultMatrix 中指定的矩陣相乘,其積取代當前矩陣。因此,假定當前矩陣是指定的建模觀察矩陣 M,則更新后的矩陣按下列計算 39。MMM ?? 這里 39。M 代表由前面 glMultMatrix 語句中的參數(shù) otherElements16 指定元素的矩陣。 函數(shù) glMultMatrix 也可用來設定任一單獨指定矩陣的變換序列。例如, glMatrixMode(GL_MODELVIEW)。 glMultMatrixf()。 //Set current matrix to the identity. glMultMatrixf(elemsM2)。//Postmultiply identity with matrix M2. glMultMatrixf(elemsM1)。//Postmultiply M2 with matrix M1. 生成下面的建模觀察矩陣: 12 MMM ?? () 在這個序列中最先應用的變換是程序中最后指定的。因此,如果我們在 OpenGL 中建立一個變換序列 ,可設想為將各個變換裝進一個棧,因而最后的操作最先應用。這并不代表實際上是這么處理的,但用棧來比喻可幫助讀者記住,在 OpenGL 程序中變換序列是描述的相反次序。 記住 OpenGL 按列優(yōu)先次序存儲矩陣是同樣重要的。 OpenGL 中引用矩陣元素 jkm 是引用 j 列和 k行的元素。這 與標準的數(shù)學轉換中行號先引用的情況相反。我們可以通過將 OpenGL 矩陣指定為 16元素、單下標數(shù)組并記住按列優(yōu)先次序列出其元素的方法來避免行 列引用的錯誤。 鍵盤操控模型旋轉的矩陣原理 圍繞空間的任意軸旋轉一個對象,但繞平行于坐標軸的軸的旋轉是最容易處理的。同樣也可以圍繞坐標軸旋轉(結合適當?shù)钠揭疲┑膹秃辖Y果來表示任意的一種旋轉。因此,先考慮坐標軸旋轉論文) 19 的操作,然后討論其他旋轉軸所需的計算。 通常,如果沿著坐標軸的正半軸觀察原點,那么繞坐標軸的逆時針旋轉為正向旋轉(參見圖)。 xy 平面上正向旋轉方向是繞基準點(平行于 z 坐標軸的軸)進行逆時針旋轉。 ( a) ( b) ( c) 圖 當沿著某坐標軸正半軸觀察原點時,繞坐標軸的正向旋轉方向是逆時針方向 繞 z 軸的二維旋轉很容易推廣到三維: ?? sinco s39。 yxx ?? ?? co ssin39。 yxy ?? () zz?39。 參數(shù) ? 表示指定的繞 z 軸旋轉的角度,而 z 坐標值在該變換中不改變。三維 z 軸旋轉方程可以用齊次坐標形式表示如下: ????????????????????????? ??????????????11000010000c o ss i n00s i nc o s139。39。39。zyxzyx???? () 更簡潔的形式是 PRP z ?? )(39。 ? () 加載矩陣,控制模型變換 由上面的矩陣加載到程序中去,以鍵盤的左右鍵及 上下鍵來控制飛機的旋轉角度,從三維空間變換為出發(fā)點,應用矩陣的變換實現(xiàn)了鍵盤對模型的操縱,仿真的結果展示了矩陣式變換優(yōu)良的輸入、輸出特性,為今后進一步研究奠定了基礎。 系統(tǒng)實現(xiàn)的原理及關鍵技術 在 OpenGL 的核心庫中,每一種基本的幾何變換都有一個獨立的函數(shù),所有變換都在三維空間中定義。要完成一次平移,需要引用平移子程序且設定三維平移向量。在旋轉函數(shù)中需指定經(jīng)過坐標系原點的旋轉軸的角度和方向。而縮放函數(shù)用來設定相對于坐標系原點的三個坐標縮放系數(shù)。在每種情況中,變換子程序都建立一個 4 4 矩陣用于接收變 換的對象坐標。 論文) 20 基本的 OpenGL 幾何變換 4 4 平移矩陣用下列子程序構造。 glTranslate*(tx,ty,tz)。 平移參數(shù) tx, ty 和 tz 可賦以任意的實數(shù)值,而附加于該函數(shù)的單個后綴碼或者是 f(浮點)或者是 d(雙倍長浮點)。對于二維應用而言,設定 tz=。而一個二維位置表示成一個 z 分量為 的四元素列矩陣。由該函數(shù)生成的平移矩陣用來對調用此函數(shù)之后定義的對象的位置進行變換。作為一個例子,使用下列語句可將隨后定義的坐標位置在 x 方向平移 25 個單位而在 y 方向平移 10個單位。 glTranslate*(,)。 類似的, 4 4 旋轉矩陣用下列函數(shù)生成: glRotate*(theta,vx,vy,vz)。 這里,向量 v=( vx, vy, vz)的分量可以有任意的浮點數(shù)值。該向量用于定義通過坐標原點的旋轉軸的方向。如果 v 并未定義成單位向量,則該旋轉矩陣在用于計算之前會被規(guī)范化。后綴碼可以是 f 或 d,而參數(shù) thera 賦以旋轉角度數(shù),由該函數(shù)將其轉換成弧度后再進行三角計算。作為例子,下列語句為繞 z 軸旋轉 ?90 的矩陣。: glRotatef(,)。 三維平移 在三維齊次坐標表示中,任意點 ? ?zyxP ,? 通過將平移距離 xt 、 yt 和 zt 加到 P 的坐標上而平移到位置 ? ?39。,39。,39。39。 zyxP ? : zyx tzztyytxx ?????? 39。,39。,39。 () 圖 給出了三維點的平移。 圖 利用變換向量 ? ?zyx tttT ,? 對某點進行平移變換 我們可以用下列等式中的矩陣形式來表達三維平移操作。但現(xiàn)在左邊位置 P 和 39。P 用 4 元列向量的齊次坐標表示,且變換操作 T 是 4 4 矩陣: 論文) 21 ??????????????????????????????????????11000100010001139。39。39。zyxtttzyxzyx () 或 PTP ??39。 () 在三維空間中,對象的平移通過平移定義該對象的各個點然后在新位置重建該對象而實現(xiàn)。對于一組多邊形表面表示的對象 ,可以將各個表面的頂點進行平移,然后重新顯示新位置的面。 圖 利用變換向量 T 對對象進行平移變換 下面的程序段給出來 輸入一組平移參數(shù)后對平移矩陣的構造。 typedef GLfloat Matrix4x4[4][4]。 /? Construct the 4 by 4 identity matrix ? / Void matrix4x4SetIdentity (Matrix4x4 matIdent4x4) { GLint row, col。 for(row=0。row4。row++) for(col=0。col4。col++) matIdent4x4[row][col]=(row==col)。 } void translate3D(GLfloat tx,GLfloat ty,GLfloat tz) { Matrix4x4 matTransl3D。 /? Initialize translation matrix to identity.? / Matrix4x4SetIdentity(matTransl3D)。 matTransl3D[0][3]=tx。 matTransl3D[1][3]=ty。 matTransl3D[2][3]=tz。 } 三維平移變換的逆變換使用二維中同樣的方法獲得,即取平移距離 xt 、 yt 和 zt 的負值。這樣生成相反的平移,而平移矩陣和其逆矩陣之積是單位矩陣。 論文) 22 實驗結果效果圖 OpenGL 它具有豐富的繪圖函數(shù)、可移植性強等特點。雖然用 OpenGL 設計模型很繁瑣,但它開發(fā)的視景仿真系統(tǒng)收到了良好的動畫演示效果。本系統(tǒng)在創(chuàng)建的場景中導入飛行模型,可導入 obj文件,導入后用戶可通過平移矩陣變換對模型進行操作,并能夠通過鍵盤實現(xiàn)對飛行器的控制,如按左鍵使飛機向左旋轉, 系統(tǒng) 運行結果如 圖: 圖 飛機
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1