给出两地之间的经纬度,用C语言计算两地之间的距离
时间: 2024-02-20 21:00:23 浏览: 81
计算两地之间距离可以使用地球经纬度计算公式,其中最常用的是 Haversine 公式。
Haversine 公式的计算公式如下:
```
a = sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlong/2)
c = 2 * atan2( sqrt(a), sqrt(1-a) )
d = R * c
```
其中,`lat1` 和 `lat2` 分别是两地的纬度,`Δlat` 是两地纬度的差值,`Δlong` 是两地经度的差值,`R` 是地球半径,`atan2` 是反正切函数。
根据这个公式,我们可以编写如下的 C 语言代码来计算两地之间距离:
```c
#include <stdio.h>
#include <math.h>
#define EARTH_RADIUS 6371.0 // 地球半径,单位:千米
double rad(double d) {
return d * M_PI / 180.0;
}
double distance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * asin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
s = s * EARTH_RADIUS;
return s;
}
int main() {
double lat1 = 39.9087; // 北京的纬度
double lng1 = 116.3975; // 北京的经度
double lat2 = 31.2304; // 上海的纬度
double lng2 = 121.4737; // 上海的经度
double d = distance(lat1, lng1, lat2, lng2);
printf("北京到上海的距离是 %.2f 千米\n", d);
return 0;
}
```
注意,在上面的代码中,`distance` 函数的参数是纬度和经度,单位是度。函数内部先将度数转换为弧度,然后按照 Haversine 公式进行计算。最终返回的距离单位是千米。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)