zoukankan      html  css  js  c++  java
  • 两点计算角度

    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));
          }
  • 相关阅读:
    android: 在android studio中使用retrolambda的步骤
    Shiro基础知识03----shiro授权(编程式授权),Permission详解,授权流程(zz)
    [Android] 关于Android的问号?和@符号的用法
    20170506 《摔跤吧,爸爸》观影笔记
    Android关于log日志,华为不输出log.v,log.d(zz)
    阅读日志:协鑫一年的多晶硅料产能能够生产做少装机容量的组件?
    《周鸿祎自述》读书笔记
    使用promise 和 generator来管理工作流
    读书笔记,《刻意练习》,第三章,心理表征
    读书笔记,《刻意练习》,第四章,黄金标准
  • 原文地址:https://www.cnblogs.com/donaldlee2008/p/5855215.html
Copyright © 2011-2022 走看看