C语言计算地球上两点之间的距离
时间: 2024-10-03 19:04:51 浏览: 35
在C语言中,我们可以使用Haversine公式来计算地球上两点之间的大圆距离,即球面上两点间的最短距离。这个公式考虑了地球是一个近似的球体。以下是基本步骤:
1. 将经纬度转换成弧度。
2. 使用Haversine公式计算半径差的平方。
3. 取平均半径乘以这个平方值的反正弦,得到角度差。
4. 将角度差转换回距离(通常以公里为单位),可以使用地球的平均直径6371公里作为换算依据。
以下是一个简单的C函数示例:
```c
#include <stdio.h>
#include <math.h>
#define EARTH_RADIUS 6371 // 地球平均半径,单位:公里
double to_radians(double degrees) {
return degrees * M_PI / 180;
}
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;
}
int main() {
double lat1, lon1, lat2, lon2; // 输入两地经纬度
printf("请输入第一点的纬度和经度(以度为单位):");
scanf("%lf %lf", &lat1, &lon1);
printf("请输入第二点的纬度和经度:");
scanf("%lf %lf", &lat2, &lon2);
double dist = distance(lat1, lon1, lat2, lon2);
printf("两点之间的距离大约是 %.2f 公里。\n", dist);
return 0;
}
```
阅读全文