Exemple #1
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>
        //Recibe	la	información	de	un	esqueleto	y	la	utiliza	para	hacer	que	una	elipse
        //denominada	Puntero	siga	el	movimiento	de	la	mano	derecha
        private void usarSkeleton(Skeleton skeleton)
        {       //Extrae	la	información	del	Joint	de	la	mano	derecha
            Joint joint1 = skeleton.Joints[JointType.HandRight];

            //	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);
                Puntero.SetValue(Canvas.LeftProperty, dMano_X);
                //	Obtiene	el	Id	de	la	persona	mapeada
                LID.Content = skeleton.TrackingId;
                //	Verificar	si	el	círculo	rojo	se	encuentra	dentro	de	la	trayectoria
                if (checarDistancia())
                {
                    Circulo1.Fill = Brushes.Yellow; //No	se	encuentra
                }
                else
                {
                    Circulo1.Fill = Brushes.Black;      //Sí	se	encuentra
                }
            }
        }
Exemple #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();
            }
        }