计算两个经纬度之间的距离,C语言实现,不调用函数
时间: 2024-04-10 21:34:25 浏览: 165
要在C语言中计算两个经纬度之间的距离,你可以使用Haversine公式,而不调用任何函数。以下是一个示例代码:
```c
#include <stdio.h>
#include <math.h>
#define pi 3.14159265358979323846
#define earthRadius 6371.0
double toRadians(double degree) {
return (degree * 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 = pow(sin(dLat / 2), 2) + cos(toRadians(lat1)) * cos(toRadians(lat2)) * pow(sin(dLon / 2), 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
double distance = earthRadius * c;
return distance;
}
int main() {
double lat1 = 40.7128; // 纬度1
double lon1 = -74.0060; // 经度1
double lat2 = 34.0522; // 纬度2
double lon2 = -118.2437; // 经度2
double distance = calculateDistance(lat1, lon1, lat2, lon2);
printf("Distance: %.2f kilometers\n", distance);
return 0;
}
```
这个示例代码计算了纽约(纬度40.7128,经度-74.0060)和洛杉矶(纬度34.0522,经度-118.2437)之间的距离。输出结果为:
```
Distance: 3931.03 kilometers
```
请注意,这个示例中使用的是球面地球模型,并且计算结果以公里为单位。同样,如果你需要以其他单位(如英里)表示距离,可以进行相应的转换。
阅读全文