Visual c++ 用哈弗斯公式计算两个城市的距离如何处理负经度

Visual c++ 用哈弗斯公式计算两个城市的距离如何处理负经度,visual-c++,distance,haversine,Visual C++,Distance,Haversine,我要用哈弗森公式计算两个城市之间的距离。 下面是VC++中的代码 但是我找不到点(18.567367,-68.363431)和(33.636719,-84.428067)[第一个值是纬度,第二个值是经度]之间的距离。 它给出类似-1的值 你能告诉我如何处理这个问题吗 代码如下: double deg2rad(double deg) { return (deg * pi / 180); }; double TravelDistance(double lat1d, double lon1d,

我要用哈弗森公式计算两个城市之间的距离。 下面是VC++中的代码

但是我找不到点(18.567367,-68.363431)和(33.636719,-84.428067)[第一个值是纬度,第二个值是经度]之间的距离。 它给出类似-1的值

你能告诉我如何处理这个问题吗

代码如下:

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)))};
提前感谢

看着

似乎您忘记了在u和v的sin()参数中除以2

您得到的答案很可能是因为sqrt参数<0或asin参数>1