计算两个经纬度之间的距离,C语言实现,不调用三角函数
时间: 2024-04-10 17:34:26 浏览: 104
如果你不想使用三角函数来计算两个经纬度之间的距离,可以使用大圆航线距离公式来近似计算。该公式假设地球是一个完美的球体,而不是一个椭球体。以下是一个不调用三角函数的C语言代码示例:
```c
#include <stdio.h>
#include <math.h>
#define earthRadius 6371.0
double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double deltaLat = lat2 - lat1;
double deltaLon = lon2 - lon1;
double d = acos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(deltaLon)) * earthRadius;
return d;
}
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: 3948.97 kilometers
```
请注意,这种方法是一个近似计算,假设地球是一个完美的球体。实际上,地球是一个稍微扁平的椭球体,所以结果可能会有一定的误差。如果需要更精确的结果,可以使用其他方法,如Vincenty公式或Haversine公式。
阅读全文