0

我将使用 Haversine 公式找到两个城市之间的距离。下面是VC++中的代码。

但我找不到点 (18.567367, -68.363431) 和 (33.636719,-84.428067) [第一个值是纬度,第二个是经度] 之间的距离。它给出了类似-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 回答