Ejemplo n.º 1
0
        public static double AnguloRectangCos(float segO, float segA)
        {
            double rad = Math.Atan(segO / segA);
            double deg = DistanceHelper.RadToDeg(rad);

            return(deg);
        }
Ejemplo n.º 2
0
        /*private void CalcularAnguloHombroArribaAbajo()
         * {
         *  puntos.Hombro2d = new Point(puntos.Hombro.Position.X, puntos.Hombro.Position.Z);
         *  //puntos.Codo2d = new Point(puntos.Codo.Position.X, puntos.Codo.Position.Z);
         *  //puntos.Mano2d = new Point(puntos.Mano.Position.X, puntos.Mano.Position.Z);
         *  puntos.Objeto2d = new Point(puntos.Objeto.X, puntos.Objeto.Z);
         *
         *  //distancia.DistanciaManoHombro = DistanceHelper.ObtenerDistancia(
         *   //   puntos.Hombro2d, puntos.Mano2d);
         *
         *  //distancia.DistanciaManoCodo = DistanceHelper.ObtenerDistancia(
         *    //  puntos.Codo2d, puntos.Mano2d);
         *
         *  //distancia.DistanciaHombroCodo = DistanceHelper.ObtenerDistancia(
         *    //  puntos.Hombro2d, puntos.Codo2d);
         *
         *  angulos.HombroAuxArribaAbajo= CalcularAngulo(distancia.DistanciaManoCodo,
         *      distancia.DistanciaManoHombro, distancia.DistanciaHombroCodo);
         *
         *  puntos.PuntoAuxHombroArribaAbajo = new Point(puntos.Hombro2d.X, puntos.Objeto2d.Y);
         *
         *  distancia.DistanciaObjetoAux = DistanceHelper.ObtenerDistancia(
         *      puntos.Objeto2d, puntos.PuntoAuxHombroAtrasAdelante);
         *
         *  distancia.DistanciaHombroAux = DistanceHelper.ObtenerDistancia(
         *      puntos.Hombro2d, puntos.PuntoAuxHombroAtrasAdelante);
         *
         *  angulos.HombroObjArribaAbajo = AnguloRectangCos(
         *      distancia.DistanciaObjetoAux, distancia.DistanciaHombroAux);
         *
         *  if (puntos.Objeto2d.X < puntos.Hombro2d.X)
         *      angulos.HombroObjArribaAbajo = 180 - angulos.HombroObjArribaAbajo;
         *
         *  angulos.HombroArribaAbajo = angulos.HombroObjArribaAbajo -
         *      angulos.HombroAuxArribaAbajo;
         * }*/
/*
 *      private void CalcularAnguloHombroAdelanteAtras()
 *      {
 *          //contiene el angulo entre hombro codo y mano.
 *          angulos.HombroAuxAtrasAdelante = CalcularAngulo(distancia.DistanciaManoCodo,
 *              distancia.DistanciaHombroObjeto, distancia.DistanciaHombroCodo);
 *
 *          //creo un punto auxiliar para calcular angulo que hay entre hombro y objeto.
 *
 *          puntos.PuntoAuxHombroAtrasAdelante = new SkeletonPoint()
 *          {
 *              X = puntos.Hombro.Position.X,
 *              Y = puntos.Hombro.Position.Y,
 *              Z = puntos.Objeto.Z
 *          };
 *
 *          //calculo distancia entre hombro y puntoaux
 *          distancia.DistanciaHombroAux = DistanceHelper.ObtenerDistancia(
 *              puntos.Hombro, puntos.PuntoAuxHombroAtrasAdelante);
 *
 *          //calculo distancia entre objeto y puntoaux
 *          distancia.DistanciaObjetoAux = DistanceHelper.ObtenerDistancia(
 *              puntos.Objeto, puntos.PuntoAuxHombroAtrasAdelante);
 *
 *          //calculo angulo entre hombro, puntoaux y objeto:
 *          angulos.HombroObjAtrasAdelante = CalcularAngulo(
 *              distancia.DistanciaObjetoAux, distancia.DistanciaHombroAux,
 *              distancia.DistanciaHombroObjeto);
 *
 *          angulos.HombroAdelanteAtras = angulos.HombroObjAtrasAdelante +
 *              angulos.HombroAuxAtrasAdelante;
 *
 *      }
 *
 *      private void CalcularAnguloHombroArribaAbajo()
 *      {
 *          angulos.HombroAuxArribaAbajo = CalcularAngulo(distancia.DistanciaManoCodo,
 *              distancia.DistanciaHombroObjeto, distancia.DistanciaHombroCodo);
 *
 *          //creo un punto auxiliar:
 *          SkeletonPoint puntoAux = new SkeletonPoint()
 *          {
 *              X = puntos.Objeto.X,
 *              Y = puntos.Hombro.Position.Y,
 *              Z = puntos.Hombro.Position.Z
 *          };
 *
 *          distancia.DistanciaHombroAux = DistanceHelper.ObtenerDistancia(
 *              puntos.Hombro, puntos.PuntoAuxHombroArribaAbajo);
 *
 *          distancia.DistanciaObjetoAux = DistanceHelper.ObtenerDistancia(
 *              puntos.Objeto, puntos.PuntoAuxHombroArribaAbajo);
 *
 *          angulos.HombroObjArribaAbajo = AnguloRectang(
 *              distancia.DistanciaObjetoAux, distancia.DistanciaHombroAux);
 *
 *          angulos.HombroArribaAbajo = angulos.HombroObjArribaAbajo -
 *              angulos.HombroAuxArribaAbajo;
 *
 *      }*/

        public double CalcularAngulo(float segmentoA, float segmentoB, float segmentoC)
        {
            //se devuelve el ángulo del primer punto, es decir que si el hombro es "a",
            //devuelve el angulo del hombro en relación al codo y mano.

            float segA2 = (float)Math.Pow(segmentoA, 2);
            float segB2 = (float)Math.Pow(segmentoB, 2);
            float segC2 = (float)Math.Pow(segmentoC, 2);

            double rad = Math.Acos((segA2 - segB2 - segC2) / ((-2) * segmentoB * segmentoC));

            double deg = DistanceHelper.RadToDeg(rad);

            return(deg);
        }