两点计算角度

http://www.cnblogs.com/aoldman/archive/2013/07/04/3171559.html

/// <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));
       }

转载于:https://www.cnblogs.com/donaldlee2008/p/5855215.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值