public void Invert_Instance() { var quat = new QuaternionD(1, 1, 1, 1); var actual = quat.Invert(); Assert.Equal(new QuaternionD(-0.25f, -0.25f, -0.25f, 0.25f), actual); }
public void Invert_Static() { var quat = new QuaternionD(1, 1, 1, 1); var actual = QuaternionD.Invert(quat); Assert.Equal(new QuaternionD(-0.25f, -0.25f, -0.25f, 0.25f), actual); }
/// <summary> /// Transforms a vector by a QuaternionD rotation. /// </summary> /// <param name="vec">The vector to transform.</param> /// <param name="quat">The QuaternionD to rotate the vector by.</param> /// <param name="result">The result of the operation.</param> public static void Transform(ref double4 vec, ref QuaternionD quat, out double4 result) { QuaternionD v = new QuaternionD(vec.x, vec.y, vec.z, vec.w), i, t; QuaternionD.Invert(ref quat, out i); QuaternionD.Multiply(ref quat, ref v, out t); QuaternionD.Multiply(ref t, ref i, out v); result = new double4(v.x, v.y, v.z, v.w); }