public Matrix2x2 Orthogonalize(Matrix2x2 defaultResult) { // Gram-Schmidtmethod // ToDo: Improve with Singular Value Decomposition A = UWVT, and set W = I Matrix2x2 result = defaultResult; Double2 x1 = Row1, x2 = Row2; Double2 y1 = x1; if (Double2.IsZero(y1)) { return(result); } y1 = y1.Normalize(); Double2 y2 = x2 - (x2 * y1) * y1; if (Double2.IsZero(y2)) { return(result); } y2 = y2.Normalize(); return(new Matrix2x2( y1.X, y1.Y, y2.X, y2.Y )); }
public override bool Equals(object o) { Matrix2x2 value = (Matrix2x2)o; if (XX != value.XX) { return(false); } if (XY != value.XY) { return(false); } if (YX != value.YX) { return(false); } if (YY != value.YY) { return(false); } return(true); }