Keil uVision5上设计计算两个GPS坐标的距离的程序
时间: 2024-02-08 11:11:59 浏览: 33
以下是一个简单的程序,可以在Keil uVision5上计算两个GPS坐标之间的距离:
```c
#include <math.h>
#define PI 3.14159265358979323846
#define RADIUS 6371000.0 // 地球半径,单位为米
// 计算弧度
double rad(double degree) {
return degree * PI / 180.0;
}
// 计算两个GPS坐标之间的距离
double distance(double lat1, double lon1, double lat2, double lon2) {
double dLat = rad(lat2 - lat1);
double dLon = rad(lon2 - lon1);
double a = sin(dLat / 2) * sin(dLat / 2) + cos(rad(lat1)) * cos(rad(lat2)) * sin(dLon / 2) * sin(dLon / 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return RADIUS * c;
}
int main() {
double lat1 = 39.9042; // 第一个GPS坐标的纬度
double lon1 = 116.4074; // 第一个GPS坐标的经度
double lat2 = 31.2304; // 第二个GPS坐标的纬度
double lon2 = 121.4737; // 第二个GPS坐标的经度
double d = distance(lat1, lon1, lat2, lon2);
printf("The distance between the two GPS coordinates is: %f meters", d);
return 0;
}
```
这个程序使用了Haversine公式来计算两个GPS坐标之间的距离。请注意,这个公式只适用于小距离的计算,如果需要计算长距离的距离,可以使用Vincenty公式。