根据经度纬度计算距离 帮我写一个c语言程序
时间: 2024-09-28 18:04:24 浏览: 23
在C语言中,计算地球上两点之间的距离通常使用Haversine公式,它考虑了球体表面的曲率。以下是一个简单的Haversine函数示例,用于估算两个经纬度之间的大圆距离:
```c
#include <stdio.h>
#include <math.h>
#define EARTH_RADIUS 6371 // 地球平均半径,单位公里
double toRadians(double degrees) {
return degrees * M_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));
return EARTH_RADIUS * c; // 返回的距离是公里
}
int main() {
double lat1 = 39.9042; // 北京的纬度
double lon1 = 116.4074; // 北京的经度
double lat2 = 51.5074; // 伦敦的纬度
double lon2 = -0.1278; // 伦敦的经度
double distance = calculateDistance(lat1, lon1, lat2, lon2);
printf("The distance between Beijing and London is approximately %.2f kilometers.\n", distance);
return 0;
}
```