Пример #1
0
        /* ------------------------------------------------------------------------- */

        /* --------------------------- Métodos Nuevos ------------------------------ */


        private bool Posicion()
        {
            double Manod    = (double)Puntero.GetValue(Canvas.TopProperty);
            double Cabeza   = (double)Puntero3.GetValue(Canvas.TopProperty);
            double Manoi    = (double)Puntero1.GetValue(Canvas.TopProperty);
            double Rodillai = (double)Puntero5.GetValue(Canvas.TopProperty);
            double Pied     = (double)Puntero6.GetValue(Canvas.TopProperty);

            if (Manod < Cabeza && Manoi < Cabeza && Rodillai + 50 > Pied)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #2
0
        /* -- Área para el método que utiliza los datos proporcionados por Kinect -- */
        /// <summary>
        /// Método que realiza las manipulaciones necesarias sobre el Skeleton trazado
        /// </summary>
        private void usarSkeleton(Skeleton skeleton)
        {
            Joint joint1 = skeleton.Joints[JointType.HandRight];
            /////////////
            Joint joint2 = skeleton.Joints[JointType.HandLeft];
            ////////////
            ////////////
            Joint joint3 = skeleton.Joints[JointType.Head];
            ////////////
            ////////////
            Joint joint4 = skeleton.Joints[JointType.KneeRight];
            ////////////
            ////////////
            Joint joint5 = skeleton.Joints[JointType.KneeLeft];
            ////////////
            ////////////
            Joint joint6 = skeleton.Joints[JointType.FootRight];
            ////////////
            ////////////
            Joint joint7 = skeleton.Joints[JointType.FootLeft];

            ////////////
            //	Si	el	Joint	está	listo	obtener	las	coordenadas
            if (joint1.TrackingState == JointTrackingState.Tracked)
            {
                //	Obtiene	las	coordenadas	(x,	y)	del	Joint
                joint_Point = this.SkeletonPointToScreen(joint1.Position);
                dMano_X     = joint_Point.X;
                dMano_Y     = joint_Point.Y;
                //Emplea	las	coordenadas	del	Joint	para	mover	la	elipse
                Puntero.SetValue(Canvas.TopProperty, dMano_Y + 35);
                Puntero.SetValue(Canvas.LeftProperty, dMano_X + 30);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
            }
            ////////////////
            if (joint2.TrackingState == JointTrackingState.Tracked)
            {
                //	Obtiene	las	coordenadas	(x,	y)	del	Joint
                joint_Point = this.SkeletonPointToScreen(joint2.Position);
                iMano_X     = joint_Point.X;
                iMano_Y     = joint_Point.Y;
                //Emplea	las	coordenadas	del	Joint	para	mover	la	elipse
                Puntero1.SetValue(Canvas.TopProperty, iMano_Y + 35);
                Puntero1.SetValue(Canvas.LeftProperty, iMano_X + 30);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
            }
            ////////////////////////////
            if (joint3.TrackingState == JointTrackingState.Tracked)
            {
                //	Obtiene	las	coordenadas	(x,	y)	del	Joint
                joint_Point = this.SkeletonPointToScreen(joint3.Position);
                Cabeza_X    = joint_Point.X;
                Cabeza_Y    = joint_Point.Y;
                //Emplea	las	coordenadas	del	Joint	para	mover	la	elipse
                Puntero3.SetValue(Canvas.TopProperty, Cabeza_Y + 35);
                Puntero3.SetValue(Canvas.LeftProperty, Cabeza_X + 30);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
            }
            ////////////////////////////
            //	Si	el	Joint	está	listo	obtener	las	coordenadas
            if (joint4.TrackingState == JointTrackingState.Tracked)
            {
                //	Obtiene	las	coordenadas	(x,	y)	del	Joint
                joint_Point = this.SkeletonPointToScreen(joint4.Position);
                dRodilla_X  = joint_Point.X;
                dRodilla_Y  = joint_Point.Y;
                //Emplea	las	coordenadas	del	Joint	para	mover	la	elipse
                Puntero4.SetValue(Canvas.TopProperty, dRodilla_Y + 35);
                Puntero4.SetValue(Canvas.LeftProperty, dRodilla_X + 30);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
            }
            ////////////////
            //	Si	el	Joint	está	listo	obtener	las	coordenadas
            if (joint5.TrackingState == JointTrackingState.Tracked)
            {
                //	Obtiene	las	coordenadas	(x,	y)	del	Joint
                joint_Point = this.SkeletonPointToScreen(joint5.Position);
                iRodilla_X  = joint_Point.X;
                iRodilla_Y  = joint_Point.Y;
                //Emplea	las	coordenadas	del	Joint	para	mover	la	elipse
                Puntero5.SetValue(Canvas.TopProperty, iRodilla_Y + 35);
                Puntero5.SetValue(Canvas.LeftProperty, iRodilla_X + 30);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
            }
            ////////////////
            //	Si	el	Joint	está	listo	obtener	las	coordenadas
            if (joint6.TrackingState == JointTrackingState.Tracked)
            {
                //	Obtiene	las	coordenadas	(x,	y)	del	Joint
                joint_Point = this.SkeletonPointToScreen(joint6.Position);
                dPie_X      = joint_Point.X;
                dPie_Y      = joint_Point.Y;
                //Emplea	las	coordenadas	del	Joint	para	mover	la	elipse
                Puntero6.SetValue(Canvas.TopProperty, dPie_Y + 35);
                Puntero6.SetValue(Canvas.LeftProperty, dPie_X + 30);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
            }
            ////////////////
            //	Si	el	Joint	está	listo	obtener	las	coordenadas
            if (joint7.TrackingState == JointTrackingState.Tracked)
            {
                //	Obtiene	las	coordenadas	(x,	y)	del	Joint
                joint_Point = this.SkeletonPointToScreen(joint7.Position);
                iPie_X      = joint_Point.X;
                iPie_Y      = joint_Point.Y;
                //Emplea	las	coordenadas	del	Joint	para	mover	la	elipse
                Puntero7.SetValue(Canvas.TopProperty, iPie_Y + 35);
                Puntero7.SetValue(Canvas.LeftProperty, iPie_X + 30);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
            }
            ////////////////

            if (Posicion() && Pase)
            {
                EscPunte(true);
                Bandera.Fill          = Brushes.Green;
                MainCanvas.Background = Brushes.Transparent;
                Pos1.Height           = 200;
                Pos1.SetValue(Canvas.TopProperty, 325.0);
                Pos1.SetValue(Canvas.LeftProperty, 600.0);
                timer.IsEnabled = true;
                puntos++;
            }
            else if (Pase)
            {
                Bandera.Fill = Brushes.Red;
            }
            else if (Pase1)
            {
                EscPunte(false);
                Bandera.Fill          = Brushes.Red;
                MainCanvas.Background = Brushes.White;
                Pos1.Visibility       = Visibility.Hidden;
                Pos2.Visibility       = Visibility.Visible;
                Progreso.Value        = 0.0;
                Progreso.Visibility   = Visibility.Hidden;
                Pase1 = false;
            }
            else if (Posicion1() && Pase2)
            {
                EscPunte(true);
                Bandera.Fill          = Brushes.Green;
                MainCanvas.Background = Brushes.Transparent;
                Pos2.Height           = 200;
                Pos2.SetValue(Canvas.TopProperty, 325.0);
                Pos2.SetValue(Canvas.LeftProperty, 425.0);
                timer2.IsEnabled = true;
                puntos++;
            }
            else if (Pase2)
            {
                Bandera.Fill = Brushes.Red;
            }
            else
            {
                EscPunte(false);
                Bandera.Fill          = Brushes.Black;
                MainCanvas.Background = Brushes.Black;
                Pos2.Visibility       = Visibility.Hidden;
                Progreso1.Visibility  = Visibility.Hidden;
                Puntuacion.Content    = "Tu puntuacion es: " + puntos.ToString();
            }
        }