/// <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); }
public void Multiply_QuaternionScalar_Staic(QuaternionD quat, double scale, QuaternionD expected) { var actual = QuaternionD.Multiply(quat, scale); Assert.Equal(expected, actual); }
public void Multiply_TwoQuaternions_Static(QuaternionD left, QuaternionD right, QuaternionD expected) { var actual = QuaternionD.Multiply(left, right); Assert.Equal(expected, actual); }
/// <summary> /// Divides a scalar by a quaternion. /// </summary> /// <param name="q">A <see cref="QuaternionD"/> instance.</param> /// <param name="s">A scalar.</param> /// <returns>A <see cref="QuaternionD"/> instance to hold the result.</returns> public static QuaternionD operator/(double s, QuaternionD q) { return(QuaternionD.Multiply(q, 1 / s)); }
/// <summary> /// Multiplies a quaternion by a scalar. /// </summary> /// <param name="q">A <see cref="QuaternionD"/> instance.</param> /// <param name="s">A scalar.</param> /// <returns>A <see cref="QuaternionD"/> instance to hold the result.</returns> public static QuaternionD operator*(QuaternionD q, double s) { return(QuaternionD.Multiply(q, s)); }
/// <summary> /// Multiplies quaternion <paramref name="a"/> by quaternion <paramref name="b"/>. /// </summary> /// <param name="a">A <see cref="QuaternionD"/> instance.</param> /// <param name="b">A <see cref="QuaternionD"/> instance.</param> /// <returns>A new <see cref="QuaternionD"/> containing the result.</returns> public static QuaternionD operator*(QuaternionD a, QuaternionD b) { return(QuaternionD.Multiply(a, b)); }