利用经纬度计算距离的c语言代码
时间: 2023-09-26 16:14:21 浏览: 218
以下是一个简单的 C 语言程序,计算两个点之间的距离,根据两点的经纬度。这个程序用到了 haversine 公式来计算距离,以及 math.h 中的 sin, cos 和 sqrt 函数。
```c
#include <math.h>
#define EARTH_RADIUS 6371.0 // 地球半径
double to_radians(double degree) {
return degree * M_PI / 180.0;
}
double distance(double lat1, double lon1, double lat2, double lon2) {
double dlat = to_radians(lat2 - lat1);
double dlon = to_radians(lon2 - lon1);
double a = sin(dlat / 2) * sin(dlat / 2) + cos(to_radians(lat1))
* cos(to_radians(lat2)) * sin(dlon / 2) * sin(dlon / 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return EARTH_RADIUS * c;
}
```
使用方法:
```c
double lat1 = 39.9042; // 北京的纬度
double lon1 = 116.4074; // 北京的经度
double lat2 = 31.2304; // 上海的纬度
double lon2 = 121.4737; // 上海的经度
double d = distance(lat1, lon1, lat2, lon2);
printf("Distance between Beijing and Shanghai: %f km\n", d);
```
注意:这个程序的计算结果是近似值,因为地球不是一个完美的球体。在实际应用中可能需要采用更精确的算法。
阅读全文