Exemplo n.º 1
0
        public bool invert(Matrix3x3d result)
        {
            double d = determinant();

            if (d == 0.0D)
            {
                return(false);
            }

            double invdet = 1.0D / d;

            result.set((m[4] * m[8] - m[7] * m[5]) * invdet, -(m[1] * m[8] - m[2] * m[7]) * invdet, (m[1] * m[5] - m[2] * m[4]) * invdet, -(m[3] * m[8] - m[5] * m[6]) * invdet, (m[0] * m[8] - m[2] * m[6]) * invdet, -(m[0] * m[5] - m[3] * m[2]) * invdet, (m[3] * m[7] - m[6] * m[4]) * invdet, -(m[0] * m[7] - m[6] * m[1]) * invdet, (m[0] * m[4] - m[3] * m[1]) * invdet);

            return(true);
        }
Exemplo n.º 2
0
 public static void mult(Matrix3x3d a, Matrix3x3d b, Matrix3x3d result)
 {
     result.set(a.m[0] * b.m[0] + a.m[1] * b.m[3] + a.m[2] * b.m[6], a.m[0] * b.m[1] + a.m[1] * b.m[4] + a.m[2] * b.m[7], a.m[0] * b.m[2] + a.m[1] * b.m[5] + a.m[2] * b.m[8], a.m[3] * b.m[0] + a.m[4] * b.m[3] + a.m[5] * b.m[6], a.m[3] * b.m[1] + a.m[4] * b.m[4] + a.m[5] * b.m[7], a.m[3] * b.m[2] + a.m[4] * b.m[5] + a.m[5] * b.m[8], a.m[6] * b.m[0] + a.m[7] * b.m[3] + a.m[8] * b.m[6], a.m[6] * b.m[1] + a.m[7] * b.m[4] + a.m[8] * b.m[7], a.m[6] * b.m[2] + a.m[7] * b.m[5] + a.m[8] * b.m[8]);
 }