vector3df getScale() { if (NewMath.IsZero(M[1]) && NewMath.IsZero(M[2]) && NewMath.IsZero(M[4]) && NewMath.IsZero(M[6]) && NewMath.IsZero(M[8]) && NewMath.IsZero(M[9])) { return(new vector3df(M[0], M[5], M[10])); } // We have to do the full calculation. return(new vector3df(NewMath.Sqrt(M[0] * M[0] + M[1] * M[1] + M[2] * M[2]), NewMath.Sqrt(M[4] * M[4] + M[5] * M[5] + M[6] * M[6]), NewMath.Sqrt(M[8] * M[8] + M[9] * M[9] + M[10] * M[10]))); }
public bool isIdentity() { if (!NewMath.Equals(M[0], 1) || !NewMath.Equals(M[5], 1) || !NewMath.Equals(M[10], 1) || !NewMath.Equals(M[15], 1)) { return(false); } for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { if ((j != i) && (!NewMath.IsZero(M[i * 4 + j]))) { return(false); } } } return(true); }