c++ 知道两点经纬度算距离
时间: 2023-06-29 14:12:39 浏览: 350
已知两点经纬度,计算距离
在 C++ 中,可以使用 Haversine 公式来计算两点之间的距离。Haversine 公式是一种计算地球表面上两点之间距离的方法,它基于球面三角学。
以下是一个示例代码,使用 Haversine 公式计算两点之间的距离:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.14159265358979323846;
const double R = 6371.0; // 地球半径,单位为千米
// 将角度转换为弧度
double toRadians(double degrees) {
return degrees * PI / 180.0;
}
// 计算两点之间的距离,参数为经度和纬度,单位为度
double distance(double lat1, double lon1, double lat2, double lon2) {
double dLat = toRadians(lat2 - lat1);
double dLon = toRadians(lon2 - lon1);
double a = sin(dLat / 2) * sin(dLat / 2) +
cos(toRadians(lat1)) * cos(toRadians(lat2)) *
sin(dLon / 2) * sin(dLon / 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return R * c;
}
int main() {
double lat1 = 31.2304; // 第一个点的纬度
double lon1 = 121.4737; // 第一个点的经度
double lat2 = 40.7128; // 第二个点的纬度
double lon2 = -74.0060; // 第二个点的经度
double d = distance(lat1, lon1, lat2, lon2);
cout << "两点之间的距离为:" << d << " 千米" << endl;
return 0;
}
```
在这个例子中,我们计算了上海(31.2304°N, 121.4737°E)和纽约(40.7128°N, 74.0060°W)之间的距离,输出的结果为 11851.2 千米。
阅读全文