c语言写一个根据经纬度计算距离
时间: 2024-09-09 07:00:50 浏览: 94
根据某点经纬度,距离,方位角,计算另一点经纬度
5星 · 资源好评率100%
在C语言中,计算两个经纬度之间的距离通常涉及到球面三角法,最常用的是Haversine公式。这个公式考虑了地球不是一个完美的球体,而是一个椭球体,所以计算会稍微复杂一些。下面是一个简单的Haversine函数示例,用于计算地球上两点之间的大圆距离:
```c
#include <math.h> // 引入数学库
#define EARTH_RADIUS 6371 // 地球平均半径,单位公里
double rad(double deg) {
return deg * M_PI / 180; // 将角度转换为弧度
}
double haversine(double lat1, double lon1, double lat2, double lon2) {
double dLat = rad(lat2 - lat1);
double dLon = rad(lon2 - lon1);
double a = sin(dLat / 2) * sin(dLat / 2) + cos(rad(lat1)) * cos(rad(lat2)) * sin(dLon / 2) * sin(dLon / 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return EARTH_RADIUS * c;
}
// 使用函数
int main() {
double lat1 = 39.9042; // 北京纬度
double lon1 = 116.4074; // 北京经度
double lat2 = 51.5074; // 伦敦纬度
double lon2 = -0.1278; // 伦敦经度
double distance = haversine(lat1, lon1, lat2, lon2);
printf("The distance between Beijing and London is approximately %.2f km.\n", distance);
return 0;
}
```
阅读全文