小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ModelView矩陣的含義和應(yīng)用(轉(zhuǎn) linghuye's blog)

 昵稱12278894 2014-09-23

設(shè)OpenGL的鏡頭坐標(biāo)系的三個軸為(R,U,N),這里的R,U,N的數(shù)值表達(dá)在世界坐標(biāo)系上,表達(dá)為*行*向量.則OpenGL用gluLookAt建立的ViewMatrix為:
  R
( U ). 即ViewMatrix的第一行為R,第二行為U,第三行為-N. 
 -N 
假設(shè)當(dāng)前的ModelMatrix為單位矩陣,當(dāng)我們使用glGetFloatv(GL_MODELVIEW_MATRIX, &mat),即取回ViewMatrix,然后將上述規(guī)則與mat進(jìn)行比對,發(fā)現(xiàn),mat的第一列是R,第二列是U,第三列是-N.

這是因為OpenGL使用該死的列存儲方式,而上述規(guī)則使用行存儲方式表達(dá).行存儲或列存儲完全是計算機(jī)中數(shù)組的內(nèi)存的行優(yōu)先或列優(yōu)先的排布問題(怎么會有人習(xí)慣列優(yōu)先存儲這種變態(tài)的思維),與空間數(shù)學(xué)概念(如列向量,行向量)無關(guān).

在大多公告板實現(xiàn)的代碼,都有g(shù)lGetFloatv(GL_MODELVIEW_MATRIX, &mat); 然后從各列中解析出R,U,N的步驟,接著用R,U,N作公告板計算.
而當(dāng)我們使用glGetFloatv(GL_TRANSPOSE_MODELVIEW_MATRIX, &mat),才與上述規(guī)則相一致.

在DirectX中D3DXMatrixLookAtLH建立出的ViewMatrix為(R, U, N),這里的R,U,N是列向量,即ViewMatrix的第一列是R,第二列是U,第三列是N.
DirectX沒有令人誤導(dǎo)的列存儲方式,生成的ViewMatrix確實符合這個數(shù)學(xué)標(biāo)準(zhǔn).

OpenGL中能直接取到的是ModelViewMatrix,此矩陣將模型坐標(biāo)從模型坐標(biāo)系轉(zhuǎn)換到鏡頭坐標(biāo)系,ModelViewMatrix的逆矩陣可以將鏡頭坐標(biāo)系下的坐標(biāo)轉(zhuǎn)換到模型坐標(biāo)系,一個典型的應(yīng)用是:已知在鏡頭坐標(biāo)系下,鏡頭所在(0, 0, 0)點,則使用上述逆矩陣推算出鏡頭在模型坐標(biāo)下的位置.注意要想推算鏡頭在世界坐標(biāo)系下的位置,需要使用ViewMatrix的逆矩陣.
如果ModelMatrix為標(biāo)準(zhǔn)矩陣,則模型坐標(biāo)系和世界坐標(biāo)系重合,ModelViewMatrix矩陣是純粹的ViewMatrix.

定理:若有一個以當(dāng)前坐標(biāo)系為數(shù)值參考,而定義的基(以標(biāo)準(zhǔn)數(shù)學(xué)形式給出)
      R
則( U ) (R,U,N為行向量)矩陣將當(dāng)前坐標(biāo)系的點的坐標(biāo)數(shù)值轉(zhuǎn)換到新基的坐標(biāo)系下的
      N       點的數(shù)值.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多