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

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

博主博客

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;

示意图

!在这里插入图片描述

代码

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

不准白嫖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MintYouth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值