예제 #1
0
        //Función para controlar las acciones a realizar según el estado en que nos encontramos.
        public void detectar_estado(Skeleton[] skeletons)
        {
            Backdrop.Height = Window.ActualHeight;
            Backdrop.Width = Window.ActualWidth;
            if (actual == Situacion.Midiendo)
            {
                foreach (Skeleton bones in skeletons)
                {

                    if (bones.Joints[JointType.WristLeft].Position.Y < bones.Joints[JointType.ElbowLeft].Position.Y + 0.02
                        && bones.Joints[JointType.WristLeft].Position.Y > bones.Joints[JointType.ElbowLeft].Position.Y - 0.02
                        && bones.Joints[JointType.ElbowLeft].Position.Y < bones.Joints[JointType.ShoulderLeft].Position.Y + 0.02
                        && bones.Joints[JointType.ElbowLeft].Position.Y > bones.Joints[JointType.ShoulderLeft].Position.Y - 0.02
                        && bones.Joints[JointType.ElbowLeft].Position.Y != 0)
                    {
                        tam_mastil = bones.Joints[JointType.WristLeft].Position.X - bones.Joints[JointType.ShoulderLeft].Position.X;
                        tam_traste = tam_mastil / 8;
                        actual = Situacion.Tocando;
                        Midiendo.Visibility = System.Windows.Visibility.Hidden;
                        Seleccion1.Visibility = System.Windows.Visibility.Visible;
                        Seleccion2.Visibility = System.Windows.Visibility.Visible;
                    }
                }
            }
            if (actual == Situacion.Tocando)
            {
                foreach (Skeleton bones in skeletons)
                {
                    if (mano_derecha == Estado_mano_derecha.Indefinido)
                    {
                        //solucionP3.Content = "Indefinido";
                        if (bones.Joints[JointType.WristRight].Position.X < bones.Joints[JointType.ShoulderRight].Position.X
                            && bones.Joints[JointType.WristRight].Position.X > bones.Joints[JointType.ShoulderLeft].Position.X
                            && bones.Joints[JointType.WristRight].Position.Y > bones.Joints[JointType.HipCenter].Position.Y)
                        {   //Mano derecha más alta que la cintura y entre los dos hombros
                            mano_derecha = Estado_mano_derecha.Inicial;
                            //solucionP3.Content = "Inicial";
                        }
                        if (bones.Joints[JointType.WristRight].Position.X < bones.Joints[JointType.ShoulderRight].Position.X
                           && bones.Joints[JointType.WristRight].Position.X > bones.Joints[JointType.ShoulderLeft].Position.X
                           && bones.Joints[JointType.WristRight].Position.Y < bones.Joints[JointType.HipCenter].Position.Y)
                        {   //Mano derecha más alta que la cintura y entre los dos hombros
                            mano_derecha = Estado_mano_derecha.Fin;
                            //solucionP3.Content = "Fin";
                        }
                    }
                    if (mano_derecha == Estado_mano_derecha.Inicial || mano_derecha == Estado_mano_derecha.Fin)
                    {
                        //solucionP3.Content = "Inicial";
                        if (bones.Joints[JointType.WristRight].Position.X < bones.Joints[JointType.ShoulderLeft].Position.X
                            || bones.Joints[JointType.WristRight].Position.X > bones.Joints[JointType.ShoulderRight].Position.X)
                        {   //Mano derecha sale de la zona de estado inicial por cualquier lado menos por abajo (Por arriba no se puede salir)
                            mano_derecha = Estado_mano_derecha.Indefinido;
                            //solucionP3.Content = "Indefinido";
                        }
                        else
                        {
                            if (mano_derecha == Estado_mano_derecha.Inicial)
                            {
                                if (bones.Joints[JointType.WristRight].Position.Y < bones.Joints[JointType.HipCenter].Position.Y)
                                {   //Mano derecha sale de la zona de estado inicial por abajo
                                    down = true;
                                    Sonar(bones);
                                    mano_derecha = Estado_mano_derecha.Fin;
                                   // solucionP3.Content = "Fin";
                                }
                            }

                            if (mano_derecha == Estado_mano_derecha.Fin)
                            {
                                if (bones.Joints[JointType.WristRight].Position.Y > bones.Joints[JointType.HipCenter].Position.Y)
                                {   //Mano derecha sale de la zona de estado inicial por abajo
                                    down = false;
                                    Sonar(bones);
                                    mano_derecha = Estado_mano_derecha.Inicial;
                                   // solucionP3.Content = "Inicial";
                                }
                            }
                        }
                    }

                }
            }
        }
예제 #2
0
        //Función para controlar las acciones a realizar según el estado en que nos encontramos.
        public void detectar_estado(Skeleton[] skeletons)
        {
            Backdrop.Height = Window.ActualHeight;
            Backdrop.Width  = Window.ActualWidth;
            if (actual == Situacion.Midiendo)
            {
                foreach (Skeleton bones in skeletons)
                {
                    if (bones.Joints[JointType.WristLeft].Position.Y <bones.Joints[JointType.ElbowLeft].Position.Y + 0.02 &&
                                                                      bones.Joints[JointType.WristLeft].Position.Y> bones.Joints[JointType.ElbowLeft].Position.Y - 0.02 &&
                        bones.Joints[JointType.ElbowLeft].Position.Y <bones.Joints[JointType.ShoulderLeft].Position.Y + 0.02 &&
                                                                      bones.Joints[JointType.ElbowLeft].Position.Y> bones.Joints[JointType.ShoulderLeft].Position.Y - 0.02 &&
                        bones.Joints[JointType.ElbowLeft].Position.Y != 0)
                    {
                        tam_mastil            = bones.Joints[JointType.WristLeft].Position.X - bones.Joints[JointType.ShoulderLeft].Position.X;
                        tam_traste            = tam_mastil / 8;
                        actual                = Situacion.Tocando;
                        Midiendo.Visibility   = System.Windows.Visibility.Hidden;
                        Seleccion1.Visibility = System.Windows.Visibility.Visible;
                        Seleccion2.Visibility = System.Windows.Visibility.Visible;
                    }
                }
            }
            if (actual == Situacion.Tocando)
            {
                foreach (Skeleton bones in skeletons)
                {
                    if (mano_derecha == Estado_mano_derecha.Indefinido)
                    {
                        //solucionP3.Content = "Indefinido";
                        if (bones.Joints[JointType.WristRight].Position.X <bones.Joints[JointType.ShoulderRight].Position.X &&
                                                                           bones.Joints[JointType.WristRight].Position.X> bones.Joints[JointType.ShoulderLeft].Position.X &&
                            bones.Joints[JointType.WristRight].Position.Y > bones.Joints[JointType.HipCenter].Position.Y)
                        {   //Mano derecha más alta que la cintura y entre los dos hombros
                            mano_derecha = Estado_mano_derecha.Inicial;
                            //solucionP3.Content = "Inicial";
                        }
                        if (bones.Joints[JointType.WristRight].Position.X <bones.Joints[JointType.ShoulderRight].Position.X &&
                                                                           bones.Joints[JointType.WristRight].Position.X> bones.Joints[JointType.ShoulderLeft].Position.X &&
                            bones.Joints[JointType.WristRight].Position.Y < bones.Joints[JointType.HipCenter].Position.Y)
                        {   //Mano derecha más alta que la cintura y entre los dos hombros
                            mano_derecha = Estado_mano_derecha.Fin;
                            //solucionP3.Content = "Fin";
                        }
                    }
                    if (mano_derecha == Estado_mano_derecha.Inicial || mano_derecha == Estado_mano_derecha.Fin)
                    {
                        //solucionP3.Content = "Inicial";
                        if (bones.Joints[JointType.WristRight].Position.X <bones.Joints[JointType.ShoulderLeft].Position.X ||
                                                                           bones.Joints[JointType.WristRight].Position.X> bones.Joints[JointType.ShoulderRight].Position.X)
                        {   //Mano derecha sale de la zona de estado inicial por cualquier lado menos por abajo (Por arriba no se puede salir)
                            mano_derecha = Estado_mano_derecha.Indefinido;
                            //solucionP3.Content = "Indefinido";
                        }
                        else
                        {
                            if (mano_derecha == Estado_mano_derecha.Inicial)
                            {
                                if (bones.Joints[JointType.WristRight].Position.Y < bones.Joints[JointType.HipCenter].Position.Y)
                                {   //Mano derecha sale de la zona de estado inicial por abajo
                                    down = true;
                                    Sonar(bones);
                                    mano_derecha = Estado_mano_derecha.Fin;
                                    // solucionP3.Content = "Fin";
                                }
                            }

                            if (mano_derecha == Estado_mano_derecha.Fin)
                            {
                                if (bones.Joints[JointType.WristRight].Position.Y > bones.Joints[JointType.HipCenter].Position.Y)
                                {   //Mano derecha sale de la zona de estado inicial por abajo
                                    down = false;
                                    Sonar(bones);
                                    mano_derecha = Estado_mano_derecha.Inicial;
                                    // solucionP3.Content = "Inicial";
                                }
                            }
                        }
                    }
                }
            }
        }