Exemplo n.º 1
0
        public static Mat3 Invert(Mat3 m)
        {
            float determinant = 1 / m.Determinant();

            return(new Mat3
                   (
                       new Vec3
                       (
                           (m.y.y * m.z.z - m.y.z * m.z.y) * determinant,
                           (m.x.z * m.z.y - m.z.z * m.x.y) * determinant,
                           (m.x.y * m.y.z - m.y.y * m.x.z) * determinant
                       ),
                       new Vec3
                       (
                           (m.y.z * m.z.x - m.y.x * m.z.z) * determinant,
                           (m.x.x * m.z.z - m.x.z * m.z.x) * determinant,
                           (m.x.z * m.y.x - m.x.x * m.y.z) * determinant
                       ),
                       new Vec3
                       (
                           (m.y.x * m.z.y - m.y.y * m.z.x) * determinant,
                           (m.x.y * m.z.x - m.x.x * m.z.y) * determinant,
                           (m.x.x * m.y.y - m.x.y * m.y.x) * determinant
                       )
                   ));
        }