Exemple #1
0
        public static Mat4 operator *(Mat4 a, Mat4 b)
        {
            if (a == null)
            {
                return(null);
            }
            if (b == null)
            {
                return(null);
            }

            Mat4 newMat = new Mat4();

            newMat[0] = b.mData[0][0] * a.mData[0][0] +
                        b.mData[0][1] * a.mData[1][0] +
                        b.mData[0][2] * a.mData[2][0] +
                        b.mData[0][3] * a.mData[3][0];

            newMat[1] = b.mData[0][0] * a.mData[0][1] +
                        b.mData[0][1] * a.mData[1][1] +
                        b.mData[0][2] * a.mData[2][1] +
                        b.mData[0][3] * a.mData[3][1];

            newMat[2] = b.mData[0][0] * a.mData[0][2] +
                        b.mData[0][1] * a.mData[1][2] +
                        b.mData[0][2] * a.mData[2][2] +
                        b.mData[0][3] * a.mData[3][2];

            newMat[3] = b.mData[0][0] * a.mData[0][3] +
                        b.mData[0][1] * a.mData[1][3] +
                        b.mData[0][2] * a.mData[2][3] +
                        b.mData[0][3] * a.mData[3][3];


            newMat[4] = b.mData[1][0] * a.mData[0][0] +
                        b.mData[1][1] * a.mData[1][0] +
                        b.mData[1][2] * a.mData[2][0] +
                        b.mData[1][3] * a.mData[3][0];

            newMat[5] = b.mData[1][0] * a.mData[0][1] +
                        b.mData[1][1] * a.mData[1][1] +
                        b.mData[1][2] * a.mData[2][1] +
                        b.mData[1][3] * a.mData[3][1];

            newMat[6] = b.mData[1][0] * a.mData[0][2] +
                        b.mData[1][1] * a.mData[1][2] +
                        b.mData[1][2] * a.mData[2][2] +
                        b.mData[1][3] * a.mData[3][2];

            newMat[7] = b.mData[1][0] * a.mData[0][3] +
                        b.mData[1][1] * a.mData[1][3] +
                        b.mData[1][2] * a.mData[2][3] +
                        b.mData[1][3] * a.mData[3][3];


            newMat[8] = b.mData[2][0] * a.mData[0][0] +
                        b.mData[2][1] * a.mData[1][0] +
                        b.mData[2][2] * a.mData[2][0] +
                        b.mData[2][3] * a.mData[3][0];

            newMat[9] = b.mData[2][0] * a.mData[0][1] +
                        b.mData[2][1] * a.mData[1][1] +
                        b.mData[2][2] * a.mData[2][1] +
                        b.mData[2][3] * a.mData[3][1];

            newMat[10] = b.mData[2][0] * a.mData[0][2] +
                         b.mData[2][1] * a.mData[1][2] +
                         b.mData[2][2] * a.mData[2][2] +
                         b.mData[2][3] * a.mData[3][2];

            newMat[11] = b.mData[2][0] * a.mData[0][3] +
                         b.mData[2][1] * a.mData[1][3] +
                         b.mData[2][2] * a.mData[2][3] +
                         b.mData[2][3] * a.mData[3][3];


            newMat[12] = b.mData[3][0] * a.mData[0][0] +
                         b.mData[3][1] * a.mData[1][0] +
                         b.mData[3][2] * a.mData[2][0] +
                         b.mData[3][3] * a.mData[3][0];

            newMat[13] = b.mData[3][0] * a.mData[0][1] +
                         b.mData[3][1] * a.mData[1][1] +
                         b.mData[3][2] * a.mData[2][1] +
                         b.mData[3][3] * a.mData[3][1];

            newMat[14] = b.mData[3][0] * a.mData[0][2] +
                         b.mData[3][1] * a.mData[1][2] +
                         b.mData[3][2] * a.mData[2][2] +
                         b.mData[3][3] * a.mData[3][2];

            newMat[15] = b.mData[3][0] * a.mData[0][3] +
                         b.mData[3][1] * a.mData[1][3] +
                         b.mData[3][2] * a.mData[2][3] +
                         b.mData[3][3] * a.mData[3][3];

            return(newMat);
        }
Exemple #2
0
 public Mat4(Mat4 mat)
     : this()
 {
     set(mat.mData);
 }