如果我有两个 GPS 位置,例如 51.507222、-0.1275 和 48.856667、2.350833,我可以使用什么公式来计算两者之间的距离?我听说过很多关于半正弦公式的信息,但找不到任何关于它的信息,或者如何将它应用到 C 中。
我已经编写了以下代码,但是,它非常不准确。有人知道为什么吗?我想不通。问题来自函数本身,但我不知道它是什么。
float calcDistance(float A, float B, float C, float D)
{
float dLat;
float dLon;
dLat = (C - A);
dLon = (D - B);
dLat /= 57.29577951;
dLon /= 57.29577951;
float v_a;
float v_c;
float distance;
v_a = sin(dLat/2) * sin(dLat/2) + cos(A) * cos(C) * sin(dLon/2) * sin(dLon/2);
v_c = 2 * atan2(sqrt(v_a),sqrt(1-v_a));
distance = r * v_c;
return distance;
}