根据经度纬度计算距离 c语言
时间: 2024-10-05 20:01:52 浏览: 43
在C语言中,计算两点之间的距离通常采用Haversine公式,它考虑了地球的球面形状。这个公式的应用涉及到地理信息处理,但C语言本身并不内置这样的函数库。以下是一个简化的示例,用于计算地球上两点之间的大圆距离:
```c
#include <stdio.h>
#include <math.h>
#define EARTH_RADIUS 6371 // 地球平均半径(km)
double to_radians(double degrees) {
return degrees * M_PI / 180.0;
}
double haversine_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;
}
int main() {
double lat1 = 39.9042; // 北京纬度
double lon1 = 116.4074; // 北京经度
double lat2 = 51.5074; // 伦敦纬度
double lon2 = -0.1278; // 伦敦经度
double distance = haversine_distance(lat1, lon1, lat2, lon2);
printf("The distance between Beijing and London is %.2f km.\n", distance);
return 0;
}
```
阅读全文