0

Haversine 公式を使用して 2 つの都市間の距離を求めます。以下はVC++のコードです。

しかし、ポイント (18.567367, -68.363431) と (33.636719,-84.428067) の間の距離を見つけることができませんでした [最初の値は緯度、2 番目の値は経度]。-1.#IND のような値になります。

この問題の対処法を教えてください。

以下はコードです:

double deg2rad(double deg) {
  return (deg * pi / 180);
};

double TravelDistance(double lat1d, double lon1d, double lat2d, double lon2d) {
  double lat1r, lon1r, lat2r, lon2r, u, v,dblDistance;
  lat1r = deg2rad(lat1d);
  lon1r = deg2rad(lon1d);
  lat2r = deg2rad(lat2d);
  lon2r = deg2rad(lon2d);
  u = sin(lat2r - lat1r);
  v = sin(lon2r - lon1r);

 return ( 2.0 * earthRadiusKm * asin(sqrt(u * u + cos(lat1r) * cos(lat2r) * v * v)))};

少し早いですがお礼を....!!

4

1 に答える 1

1

見つめている

http://en.wikipedia.org/wiki/Haversine_formula

u と v の sin() の引数で 2 で割るのを忘れているようです。

得られる答えは、sqrt 引数が < 0 であるか、asin 引数が > 1 である可能性が最も高いです。

于 2012-12-06T21:20:08.873 に答える