Если у меня есть два местоположения GPS, скажем, 51.507222, -0.1275 и 48.856667, 2.350833, какую формулу я могу использовать для расчета расстояния между ними? Я много слышал о формуле haversine, но не могу найти никакой информации о ней или о том, как применить ее к 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;
}