2つのGPS位置、たとえば51.507222、-0.1275と48.856667、2.350833がある場合、2つの間の距離を計算するためにどの式を使用できますか?半正矢関数についてはよく耳にしますが、それに関する情報や、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;
}