乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       昵稱12278894 2014-09-23

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

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

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

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

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多