计算两点之间的角度并取得方向
需求:
给定两个点的坐标,求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;
}