Пример #1
0
        /// <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);
        }
Пример #2
0
        public void Multiply_QuaternionScalar_Staic(QuaternionD quat, double scale, QuaternionD expected)
        {
            var actual = QuaternionD.Multiply(quat, scale);

            Assert.Equal(expected, actual);
        }
Пример #3
0
        public void Multiply_TwoQuaternions_Static(QuaternionD left, QuaternionD right, QuaternionD expected)
        {
            var actual = QuaternionD.Multiply(left, right);

            Assert.Equal(expected, actual);
        }
Пример #4
0
 /// <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));
 }
Пример #5
0
 /// <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));
 }
Пример #6
0
 /// <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));
 }