コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
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);
        }