私のアプリでは、緯度と経度を持つ 2 点間の距離を計算したいと考えています。私はこのウェブサイト(http://andrew.hedges.name/experiments/haversine/)からそれを計算するために使用される方程式を取得することができました。ここに方程式があります:
dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2
c = 2 * atan2( sqrt(a), sqrt(1-a) )
d = R * c (where R is the radius of the Earth
だから私はそれらをコードとして翻訳します、ここにあります:
float distanceLongitude = lon2 - lon1;
float distanceLatitude = lat2 - lat1;
float a = powf(sinf((distanceLatitude/2)), 2) + cosf(lat1) * cosf(lat2) * powf((sinf(distanceLongitude/2)),2);
float c = 2 * atan2f(sqrtf(a), sqrtf(1-a));
float d = 6373 * c; //6373 radius of earth
次の座標でコードを試してみました: lat1 = 33.854025 lon1 = 35.506923 lat2 = 33.856835 lon2 = 35.506324
ウェブサイトによると、結果は 0.317 km または 0.197 マイルです。ただし、私のコードの出力は 18.143757 です。どうすればそれを修正できますか? (私が話していることを知るために、ウェブサイトのコンバーターをチェックしてください。
注: d は最終結果である必要があります。