Ejemplo n.º 1
0
        /// <summary>
        /// Checks if the two movements correspond to the same by comparing each frame.
        /// </summary>
        public static bool match(SkeletonRecording original, SkeletonRecording imitation)
        {
            float             accumError    = 0;
            SkeletonRecording safeOriginal  = new SkeletonRecording(original);
            SkeletonRecording safeImitation = new SkeletonRecording(imitation);

            safeOriginal.restart();
            safeImitation.restart();

            while (!safeOriginal.finished())
            {
                Skeleton orig  = safeOriginal.next();
                Skeleton imit  = safeImitation.next();
                float    error = compareAngles(orig, imit);
                if (error > delta)
                {
                    return(false);
                }
                accumError += error;
                if (accumError > deltaAccum)
                {
                    return(false);
                }
            }
            return(accumError < deltaAccum);
        }
Ejemplo n.º 2
0
        private void NormalSpeedLoadButton_Click(object sender, RoutedEventArgs e)
        {
            if (movements[(int)Movement.NORMAL] != null)
            {
                SkeletonRecording movement = movements[(int)Movement.NORMAL].getMovement();
                skeletonClient.subscribe(new RecordingReproducer(skeletonCanvas, movement, movement.getTag(),
                                                                 Colors.Black, skeletonClient));
                return;
            }
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            if (dlg.ShowDialog() == true)
            {
                SkeletonRecording movement = new SkeletonRecording("normalSpeedLoadedMovement");
                movement.loadFromFile(dlg.FileName);
                skeletonClient.subscribe(new RecordingReproducer(skeletonCanvas, movement, movement.getTag(),
                                                                 Colors.Black, skeletonClient));

                // Loading movement to analyzer
                movements[(int)Movement.NORMAL] = new MovementAnalyzer(movement, "NormalMovementAnalyzerStream",
                                                                       new NormalSpeedAction(Array.AsReadOnly <VlcController>(allControllers)), Movement.NORMAL, this);
                movements[(int)Movement.NORMAL].setThreshold(movementThresholds[(int)Movement.NORMAL]);
                skeletonClient.subscribe(movements[(int)Movement.NORMAL]);

                normalEnabler.Background = new SolidColorBrush(Colors.Red);
            }
        }
Ejemplo n.º 3
0
 public RecordingReproducer(Canvas skeletonCanvas, SkeletonRecording recorder, string tag, Color color)
 {
     this.recorder = recorder;
     recorder.restart();
     this.tag            = tag;
     this.color          = color;
     this.skeletonCanvas = skeletonCanvas;
 }
Ejemplo n.º 4
0
 public MovementAnalyzer(SkeletonRecording movement, string tag, Action action, MainWindow.Movement movementType, MainWindow container)
 {
     stream            = new SkeletonRecording(tag, movement.size());
     this.movement     = movement;
     this.movementType = movementType;
     this.action       = action;
     this.container    = container;
     lastUse           = DateTime.Now;
 }
Ejemplo n.º 5
0
 public SkeletonRecording(SkeletonRecording original)
 {
     foreach (Skeleton skel in original.skeletons)
     {
         skeletons.Add(skel);
     }
     tag       = original.tag;
     end       = false;
     immutable = true;
 }
Ejemplo n.º 6
0
        private void PlayButton_Click(object sender, RoutedEventArgs e)
        {
            SkeletonRecording recording = recordingStream.getCurrentRecording();

            if (recording != null)
            {
                skeletonClient.subscribe(new RecordingReproducer(skeletonCanvas, recording,
                                                                 recording.getTag(), Colors.Black, skeletonClient));
            }
        }
Ejemplo n.º 7
0
 private void LoadButton_Click(object sender, RoutedEventArgs e)
 {
     Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
     if (dlg.ShowDialog() == true)
     {
         loadedMovement = new SkeletonRecording("loadedMovement");
         loadedMovement.loadFromFile(dlg.FileName);
         skeletonClient.subscribe(new RecordingReproducer(skeletonCanvas, loadedMovement, loadedMovement.getTag(),
                                                          Colors.Black, skeletonClient));
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Calculates the difference between the two movements as the absolute sum of each frame error.
        /// </summary>
        public static float difference(SkeletonRecording original, SkeletonRecording imitation)
        {
            float accumError = 0;

            SkeletonRecording safeOriginal  = new SkeletonRecording(original);
            SkeletonRecording safeImitation = new SkeletonRecording(imitation);

            safeOriginal.restart();
            safeImitation.restart();
            while (!safeOriginal.finished())
            {
                Skeleton orig  = safeOriginal.next();
                Skeleton imit  = safeImitation.next();
                float    error = compareAngles(orig, imit);
                accumError += error;
            }
            return(accumError);
        }
Ejemplo n.º 9
0
        private void FasterLoadButton_Click(object sender, RoutedEventArgs e)
        {
            if (movements[(int)Movement.FASTER] != null)
            {
                SkeletonRecording movement = movements[(int)Movement.FASTER].getMovement();
                skeletonClient.subscribe(new RecordingReproducer(skeletonCanvas, movement, movement.getTag(),
                                                                 Colors.Black, skeletonClient));
                return;
            }
            Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
            if (dlg.ShowDialog() == true)
            {
                SkeletonRecording movement = new SkeletonRecording("fasterLoadedMovement");
                movement.loadFromFile(dlg.FileName);
                skeletonClient.subscribe(new RecordingReproducer(skeletonCanvas, movement, movement.getTag(),
                                                                 Colors.Black, skeletonClient));

                // Loading movement to analyzer
                movements[(int)Movement.FASTER] = new MovementAnalyzer(movement, "FasterMovementAnalyzerStream", new FasterAction(this), Movement.FASTER, this);
                movements[(int)Movement.FASTER].setThreshold(movementThresholds[(int)Movement.FASTER]);
                skeletonClient.subscribe(movements[(int)Movement.FASTER]);
                fasterEnabler.Background = new SolidColorBrush(Colors.Red);
            }
        }
Ejemplo n.º 10
0
 public void startFixedRecording(int length)
 {
     recording = true;
     recorder  = new SkeletonRecording(recordingTag, length);
 }
Ejemplo n.º 11
0
 public void startRecording()
 {
     recording = true;
     recorder  = new SkeletonRecording(recordingTag);
 }