public static void Rot12(SMat3 m, double c, double s) { SVD.CalcSymmetricGivensCoefficients(m.m11, m.m12, m.m22, out c, out s); double cc = c * c; double ss = s * s; double mix = 2 * c * s * m.m12; m.SetSymmetric(m.m00, c * m.m01 - s * m.m02, s * m.m01 + c * m.m02, cc * m.m11 - mix + ss * m.m22, 0, ss * m.m11 + mix + cc * m.m22); }
public static void Rot01(SMat3 m, double c, double s) { SVD.CalcSymmetricGivensCoefficients(m.m00, m.m01, m.m11, out c, out s); double cc = c * c; double ss = s * s; double mix = 2 * c * s * m.m01; m.SetSymmetric(cc * m.m00 - mix + ss * m.m11, 0, c * m.m02 - s * m.m12, ss * m.m00 + mix + cc * m.m11, s * m.m02 + c * m.m12, m.m22); }