Exemplo n.º 1
0
        public void TestQuaternionsSlerp5()
        {
            Random      r  = new Random();
            Quaternions q1 = new Quaternions();

            q1.AxisAngle = new MCvPoint3D64f(0.0, 355.0 / 180 * Math.PI, 0.0);
            Quaternions q2 = new Quaternions();

            q2.AxisAngle = new MCvPoint3D64f(0.0, 5.0 / 180 * Math.PI, 0.0);

            double epsilon = 1.0e-12;
            double x = 0, y = 0, z = 0;

            Quaternions q = q1.Slerp(q2, 0.5);

            q.GetEuler(ref x, ref y, ref z);
            EmguAssert.IsFalse(double.IsNaN(x));
            EmguAssert.IsFalse(double.IsNaN(y));
            EmguAssert.IsFalse(double.IsNaN(z));
            double deltaDegree = Math.Abs(y / Math.PI * 180.0 - 0.0);

            EmguAssert.IsTrue(deltaDegree <= epsilon);

            q = q2.Slerp(q1, 0.5);
            q.GetEuler(ref x, ref y, ref z);
            EmguAssert.IsFalse(double.IsNaN(x));
            EmguAssert.IsFalse(double.IsNaN(y));
            EmguAssert.IsFalse(double.IsNaN(z));
            deltaDegree = Math.Abs(y / Math.PI * 180.0 - 0.0);
            EmguAssert.IsTrue(deltaDegree <= epsilon);
        }