兩點計算角度


/// <summary>
      /// 兩點計算角度
      /// </summary>
      /// <param name="startx"></param>
      /// <param name="starty"></param>
      /// <param name="endx"></param>
      /// <param name="endy"></param>
      /// <returns></returns>
      public static double CalulateXYAnagle(double startx, double starty, double endx, double endy)
      {

                              //除數不能為0
          double tan = Math.Atan(Math.Abs((endy - starty) / (endx - startx))) * 180 / Math.PI;
          if (endx > startx && endy > starty)//第一象限
          {
              return -tan;
          }
          else if (endx > startx && endy < starty)//第二象限
          {
              return tan;
          }
          else if (endx < startx && endy > starty)//第三象限
          {
              return tan - 180;
          }
          else
          {
              return 180 - tan;
          }

      }

 

  /// <summary>
        ///     計算旋轉角度
        /// </summary>
        /// <param name="nowpoint"></param>
        /// <returns></returns>
        public double ComputeAngle(Point nowpoint)
        {
            //斜邊長度
            double length = PointLegth(nowpoint, CentPoint);
            //對邊比斜邊 sin
            double hudu = Math.Asin(Math.Abs(nowpoint.Y - CentPoint.Y)/length);
            double ag = hudu*180/Math.PI;
            //第一象限90-
            if ((CentPoint.X - nowpoint.X) <= 0 && (CentPoint.Y - nowpoint.Y) >= 0)
                ag = 90 - ag;
                //第二象限90+
            else if ((CentPoint.X - nowpoint.X) <= 0 && (CentPoint.Y - nowpoint.Y) <= 0)
                ag = ag + 90;
                //第三象限270-
            else if ((CentPoint.X - nowpoint.X) >= 0 && (CentPoint.Y - nowpoint.Y) <= 0)
                ag = 270 - ag;
                //第四象限270+
            else if ((CentPoint.X - nowpoint.X) >= 0 && (CentPoint.Y - nowpoint.Y) >= 0)
                ag = ag + 270;
            //偏移
            ag -= 235;
            return ag;
        }

        /// <summary>
        ///     計算兩點間距離
        /// </summary>
        /// <param name="pa"></param>
        /// <param name="pb"></param>
        /// <returns></returns>
        public double PointLegth(Point pa, Point pb)
        {
            return Math.Sqrt(Math.Pow((pa.X - pb.X), 2) + Math.Pow((pa.Y - pb.Y), 2));
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM