設opengl的鏡頭座標系的三個軸為(r,u,n),這裡的r,u,n的數值表達在世界座標系上,表達為*行*向量.則opengl用glulookat建立的viewmatrix為:
r( u ). 即viewmatrix的第一行為r,第二行為u,第三行為-n.
-n 假設當前的modelmatrix為單位矩陣,當我們使用glgetfloatv(gl_modelview_matrix, &mat),即取回viewmatrix,然後將上述規則與mat進行比對,發現,mat的第一列是r,第二列是u,第三列是-n.
這是因為opengl使用該死的列儲存方式,而上述規則使用行儲存方式表達.行儲存或列儲存完全是計算機中陣列的記憶體的行優先或列優先的排布問題(怎麼會有人習慣列優先儲存這種**的思維),與空間數學概念(如列向量,行向量)無關.
在大多公告板實現的**,都有glgetfloatv(gl_modelview_matrix, &mat); 然後從各列中解析出r,u,n的步驟,接著用r,u,n作公告板計算.
而當我們使用glgetfloatv(gl_transpose_modelview_matrix, &mat),才與上述規則相一致.
在directx中d3dxmatrixlookatlh建立出的viewmatrix為(r, u, n),這裡的r,u,n是列向量,即viewmatrix的第一列是r,第二列是u,第三列是n.
directx沒有令人誤導的列儲存方式,生成的viewmatrix確實符合這個數學標準.
opengl中能直接取到的是modelviewmatrix,此矩陣將模型座標從模型座標系轉換到鏡頭座標系,modelviewmatrix的逆矩陣可以將鏡頭座標系下的座標轉換到模型座標系,乙個典型的應用是:已知在鏡頭座標系下,鏡頭所在(0, 0, 0)點,則使用上述逆矩陣推算出鏡頭在模型座標下的位置.注意要想推算鏡頭在世界座標系下的位置,需要使用viewmatrix的逆矩陣.
如果modelmatrix為標準矩陣,則模型座標系和世界座標系重合,modelviewmatrix矩陣是純粹的viewmatrix.
定理:若有乙個以當前座標係為數值參考,而定義的基(以標準數學形式給出)
r則( u ) (r,u,n為行向量)矩陣將當前座標系的點的座標數值轉換到新基的座標系下的
n 點的數值.
Chr 和chrb 的含義
chr charcode 必要的 charcode 引數是乙個用來識別某字元的 long。charcode ascii碼 每個字都擁有自己的ascii 要知道某乙個字的ascii碼,編寫一段vb程式 msgbox cstr asc 要知道的字元,要用 括起來 這句 可以告訴你。此函式很有用,一些輸入...
rownum 和 distinct 的含義
rownum是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推,這個偽欄位可以用於限制查詢返回的總行數.oracle在select出一條記錄後便加上乙個rownum,而不等所有的結果都select出來後再加上rownum。然後是distinct的工作原理。...
this指標的用法和含義
1 this指標的含義及其用法 1.this指標是乙個隱含於每乙個成員函式中的特殊指標。它指向正在被該成員函式操作的那個物件。2.當對乙個物件呼叫成員函式時,編譯程式先將物件的位址賦給this指標,然後呼叫成員函式,每次成員函式訪問資料成員時,由隱含使用this指標。3.當乙個成員函式被呼叫時,自動...