计算两点之间的角度并取得方向

计算两点之间的角度并取得方向

博主博客

https://blog.snwl0311.cn/

需求

给定两个点的坐标,求P2在P1的方位。

思路

通过两点的坐标,计算得到角度,并根据角度范围定义方向位置。

假设点一(X1,Y1),点二(X2,Y2)
假设点一是坐标原点(0,0)点二是(1,0)则这两点之间的连线角度是:0;
假设点一是坐标原点(0,0)点二是(1,1)则这两点之间的连线角度是:45;
假设点一是坐标原点(0,0)点二是(0,1)则这两点之间的连线角度是:90;
假设点一是坐标原点(0,0)点二是(-1,1)则这两点之间的连线角度是:135;
假设点一是坐标原点(0,0)点二是(-1,0)则这两点之间的连线角度是:180;
假设点一是坐标原点(0,0)点二是(-1,-1)则这两点之间的连线角度是:-135;
假设点一是坐标原点(0,0)点二是(0,-1)则这两点之间的连线角度是:-90;
假设点一是坐标原点(0,0)点二是(1,-1)则这两点之间的连线角度是:-45;

示意图

!计算两点之间的角度并取得方向_第1张图片

代码

public static int PointsAngleTool(PointF p1, PointF p2)
        {
            int positionInfo = 0;
            double angleOfLine = Math.Atan2((p2.Y - p1.Y), (p2.X - p1.X)) * 180 / Math.PI;//计算两点的正切值并获取角度
            if (angleOfLine > -45 && angleOfLine < 45)//右
            {
                positionInfo = 1;
            }
            else if (angleOfLine > 135 && angleOfLine < -135)//左
            {
                positionInfo = 2;
            }
            else if (angleOfLine > 45 && angleOfLine < 135)//上
            {
                positionInfo = 3;
            }
            else if (angleOfLine > -135 && angleOfLine < -45)//下
            {
                positionInfo = 4;
            }
            return positionInfo;
        }

不准白嫖

你可能感兴趣的:(C#,c#)