private bool Posicion1() { 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 Rodillad = (double)Puntero4.GetValue(Canvas.TopProperty); //double Pied = (double)Puntero6.GetValue(Canvas.TopProperty); if (Manod < Cabeza && Manoi < Cabeza && (Rodillai > Rodillad + 15)) { return(true); } else { return(false); } }
/* -- Á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(); } }