예제 #1
0
 public void Movimiento41()
 {
     this.centerHip  = new ptMov();
     this.kneeLeft   = new ptMov();
     this.kneeRight  = new ptMov();
     this.ankleLeft  = new ptMov();
     this.ankleRight = new ptMov();
     this.rightHip   = new ptMov();
     this.leftHip    = new ptMov();
 }
 public EjercicioMacarena()
 {
     this.centerHip      = new ptMov();
     this.hipRight       = new ptMov();
     this.hipLeft        = new ptMov();
     this.shoulderRight  = new ptMov();
     this.shoulderLeft   = new ptMov();
     this.shoulderCenter = new ptMov();
     this.elbowRight     = new ptMov();
     this.elbowLeft      = new ptMov();
     this.handRight      = new ptMov();
     this.handLeft       = new ptMov();
     this.head           = new ptMov();
     listaPosturas.Add(posturas.Nada);
 }
        private bool CompruebaPosIni(Skeleton skeleton)
        {
            damePuntos(skeleton);
            ptMov headAux           = Inicial[0];
            ptMov shoulderCenterAux = Inicial[1];
            ptMov CenterHipAux      = Inicial[2];

            if (Math.Abs(headAux.X - head.X) <= 0.05f && Math.Abs(headAux.Y - head.Y) <= 0.05f && Math.Abs(headAux.Z - head.Z) <= 0.05f &&
                Math.Abs(shoulderCenterAux.X - shoulderCenter.X) <= 0.05f && Math.Abs(shoulderCenterAux.Y - shoulderCenter.Y) <= 0.05f && Math.Abs(shoulderCenterAux.Z - shoulderCenter.Z) <= 0.05f &&
                Math.Abs(CenterHipAux.X - centerHip.X) <= 0.05f && Math.Abs(CenterHipAux.Y - centerHip.Y) <= 0.05f && Math.Abs(CenterHipAux.Z - centerHip.Z) <= 0.05f)
            {
                return(true);
            }

            return(false);
        }
        private void ManoDerechaCodoIzquierdo(Skeleton skeleton)
        {
            //Obtenemos la posicion de los puntos del esqueleto.
            damePuntos(skeleton);

            List <ptMov> mov = new List <ptMov>();

            //Comprobar si la lista esta vacia, entonces se comienza desde la posicion inicial.
            if (listaMovimientos.Count == 0)
            {
                //Comprobar que se encuentra en la posicion inicial. (Cuerpo recto,brazo derecho levantado y mano izquierda en codo derecho)
                // if (CompruebaPosIni(skeleton))
                //{
                //  if (Math.Abs(handLeft.Y - elbowRight.Y) <= 0.05f && Math.Abs(handLeft.X - elbowRight.X) <= 0.05f
                //    && Math.Abs(handRight.Y - elbowRight.Y) <= 0.05f && Math.Abs(elbowRight.Y - shoulderRight.Y) <= 0.05f)
                //{
                mov.Add(elbowLeft);
                mov.Add(handRight);
                listaMovimientos.Add(mov);
                //}

                //}
            }
            else
            {
                //Obtenemos el ultimo elemto de la lista
                mov = listaMovimientos[listaMovimientos.Count - 1];
                ptMov elbowLeftAux = mov[0];
                ptMov handRightAux = mov[1];

                //Comprobamos si se ha colocado la mano izquierda en el codo derecho
                if (Math.Abs(handRight.Y - elbowLeft.Y) <= 0.05f && Math.Abs(handRight.X - elbowLeft.X) <= 0.05f)
                {
                    //Cuando se levante por completo se añade a la lista de posturas y se vacia la lista de movimientos.
                    listaPosturas.Add(posturas.ManoDerCodoIzq);
                    listaMovimientos.Clear();
                }
                //Comparamos el movimiento anterior con el actual y vemos si ha movido la mano hacia el codo.
                else if (Math.Abs(handRight.Y - handRightAux.Y) <= 0.05f && Math.Abs(handRight.X - handRightAux.X - 0.05f) < 0)
                {
                    mov.Add(elbowLeft);
                    mov.Add(handRight);
                    listaMovimientos.Add(mov);
                }
                //Si el movimiento no es correcto no se añade a la lista y puede volver a la posicion anterior
            }
        }
        private void BrazoDerechoCaderaIzquierda(Skeleton skeleton)
        {
            //Obtenemos la posicion de los puntos del esqueleto.
            damePuntos(skeleton);

            List <ptMov> mov = new List <ptMov>();

            //Comprobar si la lista esta vacia, entonces se comienza desde la posicion inicial.
            if (listaMovimientos.Count == 0)
            {
                //Comprobar que se encuentra en la posicion inicial.
                //(Cuerpo recto,mano izquierda en cadera derecha y mano izquierda en cabeza)
                //if (CompruebaPosIni(skeleton))
                //{
                //  if ((Math.Abs(handLeft.Y - hipRight.Y) <= 0.05f && Math.Abs(handLeft.X - hipRight.X) <= 0.05f)
                // && (Math.Abs(handRight.Y - head.Y) <= 0.05f && Math.Abs(handRight.X - head.X) <= 0.05f))
                //  {
                mov.Add(handRight);
                listaMovimientos.Add(mov);
                // }

                //}
            }
            else
            {
                //Obtenemos el ultimo elemto de la lista
                mov = listaMovimientos[listaMovimientos.Count - 1];
                ptMov handRightAux = mov[0];

                //Comprobamos si se ha colocado la mano derecha en la cadera izquierda.
                if (handRight.Y < hipLeft.Y)
                {
                    //Cuando se levante por completo se añade a la lista de posturas y se vacia la lista de movimientos.
                    listaPosturas.Add(posturas.BrazoDerCadIzq);
                    listaMovimientos.Clear();
                }
                //Comparamos el movimiento anterior con el actual y vemos si ha movido la mano hacia la cadera.
                else if (Math.Abs(handRight.Y - handRightAux.Y - 0.05f) < 0)
                {
                    mov.Add(handRight);
                    listaMovimientos.Add(mov);
                }
                //Si el movimiento no es correcto no se añade a la lista y puede volver a la posicion anterior
            }
        }
 //Obtengo las coordenadas de los puntos.
 private void damePuntos(Skeleton skel)
 {
     if (skel.Joints[JointType.HipCenter].TrackingState == JointTrackingState.Tracked)
     {
         this.centerHip = new ptMov();
         //Obtengos puntos de la cadera. Punto central
         centerHip.X = skel.Joints[JointType.HipCenter].Position.X;
         centerHip.Y = skel.Joints[JointType.HipCenter].Position.Y;
         centerHip.Z = skel.Joints[JointType.HipCenter].Position.Z;
     }
     if (skel.Joints[JointType.HipRight].TrackingState == JointTrackingState.Tracked)
     {
         this.hipRight = new ptMov();
         //Obtengos puntos de la cadera derecha.
         hipRight.X = skel.Joints[JointType.HipRight].Position.X;
         hipRight.Y = skel.Joints[JointType.HipRight].Position.Y;
         hipRight.Z = skel.Joints[JointType.HipRight].Position.Z;
     }
     if (skel.Joints[JointType.HipLeft].TrackingState == JointTrackingState.Tracked)
     {
         this.hipLeft = new ptMov();
         //Obtengos puntos de la cadera izquierda.
         hipLeft.X = skel.Joints[JointType.HipLeft].Position.X;
         hipLeft.Y = skel.Joints[JointType.HipLeft].Position.Y;
         hipLeft.Z = skel.Joints[JointType.HipLeft].Position.Z;
     }
     if (skel.Joints[JointType.ShoulderRight].TrackingState == JointTrackingState.Tracked)
     {
         this.shoulderRight = new ptMov();
         //Puntos de hombro derecho.
         shoulderRight.X = skel.Joints[JointType.ShoulderRight].Position.X;
         shoulderRight.Y = skel.Joints[JointType.ShoulderRight].Position.Y;
         shoulderRight.Z = skel.Joints[JointType.ShoulderRight].Position.Z;
     }
     if (skel.Joints[JointType.ShoulderLeft].TrackingState == JointTrackingState.Tracked)
     {
         this.shoulderLeft = new ptMov();
         //Puntos de hombro izquierdo.
         shoulderLeft.X = skel.Joints[JointType.ShoulderLeft].Position.X;
         shoulderLeft.Y = skel.Joints[JointType.ShoulderLeft].Position.Y;
         shoulderLeft.Z = skel.Joints[JointType.ShoulderLeft].Position.Z;
     }
     if (skel.Joints[JointType.ShoulderCenter].TrackingState == JointTrackingState.Tracked)
     {
         this.shoulderCenter = new ptMov();
         //Puntos del centro de los hombros.
         shoulderCenter.X = skel.Joints[JointType.ShoulderCenter].Position.X;
         shoulderCenter.Y = skel.Joints[JointType.ShoulderCenter].Position.Y;
         shoulderCenter.Z = skel.Joints[JointType.ShoulderCenter].Position.Z;
     }
     if (skel.Joints[JointType.ElbowRight].TrackingState == JointTrackingState.Tracked)
     {
         this.elbowRight = new ptMov();
         //Puntos del codo derecho.
         elbowRight.X = skel.Joints[JointType.ElbowRight].Position.X;
         elbowRight.Y = skel.Joints[JointType.ElbowRight].Position.Y;
         elbowRight.Z = skel.Joints[JointType.ElbowRight].Position.Z;
     }
     if (skel.Joints[JointType.ElbowLeft].TrackingState == JointTrackingState.Tracked)
     {
         this.elbowLeft = new ptMov();
         //Puntos del codo izquierdo.
         elbowLeft.X = skel.Joints[JointType.ElbowLeft].Position.X;
         elbowLeft.Y = skel.Joints[JointType.ElbowLeft].Position.Y;
         elbowLeft.Z = skel.Joints[JointType.ElbowLeft].Position.Z;
     }
     if (skel.Joints[JointType.HandRight].TrackingState == JointTrackingState.Tracked)
     {
         this.handRight = new ptMov();
         //Puntos de la muñeca derecha.
         handRight.X = skel.Joints[JointType.HandRight].Position.X;
         handRight.Y = skel.Joints[JointType.HandRight].Position.Y;
         handRight.Z = skel.Joints[JointType.HandRight].Position.Z;
     }
     if (skel.Joints[JointType.HandLeft].TrackingState == JointTrackingState.Tracked)
     {
         this.handLeft = new ptMov();
         //Puntos de la muñeca irquierda.
         handLeft.X = skel.Joints[JointType.HandLeft].Position.X;
         handLeft.Y = skel.Joints[JointType.HandLeft].Position.Y;
         handLeft.Z = skel.Joints[JointType.HandLeft].Position.Z;
     }
     if (skel.Joints[JointType.Head].TrackingState == JointTrackingState.Tracked)
     {
         this.head = new ptMov();
         //Puntos de la cabeza.
         head.X = skel.Joints[JointType.Head].Position.X;
         head.Y = skel.Joints[JointType.Head].Position.Y;
         head.Z = skel.Joints[JointType.Head].Position.Z;
     }
 }