c++ 根据两点的经纬度计算距离(米为单位)
时间: 2024-10-15 18:21:31 浏览: 33
通过两点的经纬度信息计算距离及相对方位角(正北角)
4星 · 用户满意度95%
在 C++ 中,我们可以使用 Haversine 公式来计算地球上两点之间的大圆距离(球面距离),通常用于经度和纬度坐标。Haversine 公式考虑了地球是个椭球体而非完美的球形。以下是基本步骤:
1. 将经纬度转换为弧度制,因为 Haversine 公式需要弧度作为输入。
2. 计算半球直径(即地球平均半径,比如大约 6371 千米转换为米)。
3. 应用公式,包括两个点的纬度差、经度差以及三角函数。
以下是一个简单的 C++ 函数示例,用于计算两点之间的距离:
```cpp
#include <cmath>
using namespace std;
const double PI = 3.141592653589793238;
const double EARTH_RADIUS_KM = 6371; // 地球平均半径(千米)
double toRadians(double degrees) {
return degrees * PI / 180.0;
}
double calculateDistance(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));
double distance = EARTH_RADIUS_KM * c; // 距离以千米为单位
return distance * 1000; // 转换为米
}
```
阅读全文