代码实现如下:
public static double getAzimuth(PointVo p1,PointVo p2){
double a_ab = Math.atan((p2.getY()- p1.getY())/(p2.getX()-p1.getX()))*180/Math.PI;
return getAzimuth(a_ab,p2.getY()- p1.getY(),p2.getX()-p1.getX());
}
public static double getAzimuth(double a_ab,double d_y,double d_x){
if(a_ab<0){
return a_ab + 360;
} else if (a_ab>360) {
return a_ab - 360;
}
if((d_y>0||d_y<0)&&d_x<0){
a_ab= a_ab+180;
}
if((d_y>0||d_y<0)&&d_x>0){
a_ab = a_ab;
}
if(d_y>0 && d_x == 0){
a_ab= 90;
}
if(d_y<0 && d_x == 0){
a_ab= 270;
}
return a_ab;
}
测试数据对比