public void Rot12(ref float c, ref float s) { Mat3.CalcSymmetricGivensCoefficients(m11, m12, m22, out c, out s); float cc = c * c; float ss = s * s; float mix = 2 * c * s * m12; SetSymmetric(m00, c * m01 - s * m02, s * m01 + c * m02, cc * m11 - mix + ss * m22, 0, ss * m11 + mix + cc * m22); }
public void Rot01(ref float c, ref float s) { Mat3.CalcSymmetricGivensCoefficients(m00, m01, m11, out c, out s); float cc = c * c; float ss = s * s; float mix = 2 * c * s * m01; SetSymmetric(cc * m00 - mix + ss * m11, 0, c * m02 - s * m12, ss * m00 + mix + cc * m11, s * m02 + c * m12, m22); }