private void StartAnimationPrivate(double[] coord, double[] quaternion, DateTime start) { Tuple <TimeSpan, double[], double[]> parameters; lock (loc) { parameters = queue.Dequeue(); } startTime = start; this.Duration = parameters.Item1; this.RepeatBehavior = new RepeatBehavior(1); calculator.Set(parameters.Item2, parameters.Item3); this.Completed += Linear6DMotion_AnimationCompleted; System.Windows.Media.Media3D.Vector3D v = new System.Windows.Media.Media3D.Vector3D(rotationAxis[0], rotationAxis[1], rotationAxis[2]); angle_uniform.Axis = v; angle_uniform.Angle = 0; Quaternion qua = new Quaternion(quaternion[1], quaternion[2], quaternion[3], quaternion[0]); quaternionConstRotation.Quaternion = qua; translation.OffsetX = coord[0]; translation.OffsetY = coord[1]; translation.OffsetZ = coord[2]; From = 0; To = 1; animatable.BeginAnimation(dependencyProperty, this); }