行矩阵列矩阵D3DGLU3D
生活随笔
收集整理的這篇文章主要介紹了
行矩阵列矩阵D3DGLU3D
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
void Start () {//矩陣函數原型:Matrix4x4(Vector4 colum0, Vector4 colum1, Vector4 colum2, Vector4 colum3),這說明U3D使用列矩陣,同opengl//因此矩陣是左乘的,DX是行矩陣,矩陣是右乘的。//在DX中WVP矩陣組合為 W*V*P, 而GL中MVP矩陣組合為 P*V*MMatrix4x4 tm = new Matrix4x4(new Vector4(1, 0, 0, 3), new Vector4(0,1,0,0),new Vector4(0,0,1,0),new Vector4(0,0,0,1));Vector4 pt4 = new Vector4(0, 0, 0, 1);Vector3 pt3 = new Vector3(0, 0, 0);//var pt4t = pt4*tm; //編譯出錯,沒有定義這種乘法,不支持右乘!var pt4t = tm*pt4; var pt4tt = tm.transpose*pt4; //矩陣轉置-變為行矩陣var pt3t = tm*pt3;var pt3tt = tm.transpose*pt3; //實際是 tm.transpose * (0,0,0,0),U3D將vector3擴展為w為0,而不是像DX那樣將w擴展為1//總結:在U3D中,//1,矩陣是列矩陣,必須左乘,U3D未定義矩陣右乘向量這種操作//2,vector3(x,y,z)與矩陣相乘時,vector3被擴展為vector4(x,y,z,0)Debug.Log(pt4t.x + "," + pt4t.y+","+ pt4t.z); //0,0,0Debug.Log(pt4tt.x + "," + pt4tt.y+","+ pt4tt.z); //3,0,0Debug.Log(pt3t.x + "," + pt3t.y+","+ pt3t.z); //0,0,0Debug.Log(pt3tt.x + "," + pt3tt.y + "," + pt3tt.z);//0,0,0//3,鑒于2的情況,U3D中操作頂點變換最好使用函數,如下var tx = tm.transpose.MultiplyPoint(pt3t);Debug.Log(tx.x + "," + tx.y + "," + tx.z); //3,0,0
}
?
轉載于:https://www.cnblogs.com/timeObjserver/p/9466113.html
總結
以上是生活随笔為你收集整理的行矩阵列矩阵D3DGLU3D的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中内置对象Math()常用方法笔记
- 下一篇: 第十三章:位图(三)