public static Matrix2x2f PolarDecomposition(Matrix2x2f m) { Matrix2x2f q = m + new Matrix2x2f(m.m11, -m.m10, -m.m01, m.m00); Vector2f c0 = q.GetColumn(0); Vector2f c1 = q.GetColumn(1); float s = c0.Magnitude; q.SetColumn(0, c0 / s); q.SetColumn(1, c1 / s); return(q); }
public static Matrix2x2f QRDecomposition(Matrix2x2f m) { Vector2f a = m.GetColumn(0).Normalized; Matrix2x2f q = new Matrix2x2f(); q.SetColumn(0, a); q.SetColumn(1, a.PerpendicularCCW); return(q); }