SharpMath.float3x3.Invert C# (CSharp) Méthode

Invert() public méthode

public Invert ( ) : float3x3
Résultat float3x3
        public float3x3 Invert()
        {
            float	fDet = Determinant();
            if ( (float) System.Math.Abs(fDet) < float.Epsilon )
                throw new MatrixException( "Matrix is not invertible!" );		// The matrix is not invertible! Singular case!

            float	fIDet = 1.0f / fDet;

            float3x3	Temp = new float3x3();
            Temp.m[0, 0] = +(m[1, 1] * m[2, 2] - m[2, 1] * m[1, 2]) * fIDet;
            Temp.m[1, 0] = -(m[1, 0] * m[2, 2] - m[2, 0] * m[1, 2]) * fIDet;
            Temp.m[2, 0] = +(m[1, 0] * m[2, 1] - m[2, 0] * m[1, 1]) * fIDet;
            Temp.m[0, 1] = -(m[0, 1] * m[2, 2] - m[2, 1] * m[0, 2]) * fIDet;
            Temp.m[1, 1] = +(m[0, 0] * m[2, 2] - m[2, 0] * m[0, 2]) * fIDet;
            Temp.m[2, 1] = -(m[0, 0] * m[2, 1] - m[2, 0] * m[0, 1]) * fIDet;
            Temp.m[0, 2] = +(m[0, 1] * m[1, 2] - m[1, 1] * m[0, 2]) * fIDet;
            Temp.m[1, 2] = -(m[0, 0] * m[1, 2] - m[1, 0] * m[0, 2]) * fIDet;
            Temp.m[2, 2] = +(m[0, 0] * m[1, 1] - m[1, 0] * m[0, 1]) * fIDet;

            Set( Temp );

            return	this;
        }