double computeHeading(double latitude1, double longitude1, double latitude2, double longitude2)
{
double degToRad = PI / 180.0;
double phi1 = latitude1*degToRad;
double phi2 = latitude2*degToRad;
double lam1 = longitude1*degToRad;
double lam2 = longitude2*degToRad;
double x,y;
x = cos(phi2) * sin(lam2-lam1);
printf("X is %lf\n", x);
y = cos(phi1) * sin(phi2) - sin(phi1) * cos(phi2) * cos(lam2-lam1);
printf("Y is %lf\n", y);
return atan2(x,y)*180/PI;
}
我正在使用上述函数来确定两个地理坐标之间从北方的真实方位。
我目前正在开发一个小型导航小部件,它使用来自 Android 传感器的 GPS 数据。小部件有一个箭头朝向远离设备当前位置的点。箭头的方向随着设备的当前位置和方位角而变化,始终面向远处的点。
这是一个场景:
我在一个位置,朝北,另一个位置的方位角为 300 度(在我的西北方向)。如果我朝南不动,我与远处的相对方位应该是120度。
如何在考虑朝向(方位角)的情况下找到相对方位?