输入两地的经纬度,用Haversine公式计算两地距离(用C++编程)
时间: 2024-10-14 12:05:40 浏览: 43
在C++中,我们可以使用Haversine公式来计算地球上两点之间的大圆距离。这个公式基于球面三角学,考虑了地球不是一个完美的圆球而是一个椭球体的影响。以下是一个简单的Haversine函数示例:
```cpp
#include <cmath>
const double EARTH_RADIUS_KM = 6371.0; // 地球平均半径,单位公里
double toRadians(double degrees) {
return degrees * M_PI / 180.0;
}
double haversine(double lat1, double lon1, double lat2, double lon2) {
double dLat = toRadians(lat2 - lat1);
double dLon = toRadians(lon2 - lon1);
double a = pow(sin(dLat / 2), 2) + cos(toRadians(lat1)) * cos(toRadians(lat2)) * pow(sin(dLon / 2), 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return EARTH_RADIUS_KM * c;
}
int main() {
double lat1, lon1, lat2, lon2;
// 获取用户输入的两个地点的经纬度
// ...
double distance = haversine(lat1, lon1, lat2, lon2);
std::cout << "The distance between the two points is approximately: " << distance << " kilometers." << std::endl;
return 0;
}
```
在这个例子中,你需要获取用户输入的经纬度,然后调用haversine函数计算距离。注意Haversine公式假设地球是个理想的球体,对于真实的地理位置精确度可能有限。
阅读全文