以下是一份实现计算两个经纬度之间距离的Qt代码,精确到厘米
时间: 2024-05-29 12:10:06 浏览: 14
double distance(double lat1, double lon1, double lat2, double lon2) {
const double EARTH_RADIUS = 6378137.0; // 地球半径,单位为米
double radLat1 = qDegreesToRadians(lat1);
double radLat2 = qDegreesToRadians(lat2);
double a = radLat1 - radLat2;
double b = qDegreesToRadians(lon1) - qDegreesToRadians(lon2);
double s = 2 * qAsin(qSqrt(qPow(qSin(a/2),2) + qCos(radLat1)*qCos(radLat2)*qPow(qSin(b/2),2)));
s = s * EARTH_RADIUS;
return qRound(s * 100.0) / 100.0; // 精确到厘米,四舍五入取两位小数
}
相关问题
qt代码实现计算两个经纬度之间的距离,精确到米
以下是一份实现计算两个经纬度之间距离的Qt代码,精确到米:
```cpp
#include <QtCore>
#include <QtMath>
const double EARTH_RADIUS = 6371000.0;
double degreesToRadians(double degrees) {
return degrees * M_PI / 180.0;
}
double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double deltaLat = degreesToRadians(lat2 - lat1);
double deltaLon = degreesToRadians(lon2 - lon1);
double a = qPow(qSin(deltaLat / 2.0), 2.0) + qCos(degreesToRadians(lat1)) * qCos(degreesToRadians(lat2)) * qPow(qSin(deltaLon / 2.0), 2.0);
double c = 2.0 * qAtan2(qSqrt(a), qSqrt(1.0 - a));
return EARTH_RADIUS * c;
}
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
double lat1 = 34.264;
double lon1 = -118.535;
double lat2 = 33.942;
double lon2 = -118.408;
double distance = calculateDistance(lat1, lon1, lat2, lon2);
qDebug() << "Distance between the two points is" << distance << "meters.";
return app.exec();
}
```
这份代码中,我们使用了 `degreesToRadians()` 函数将角度转换为弧度,在 `calculateDistance()` 函数中使用了 Haversine 公式进行计算。最后,我们输出两个点之间的距离,单位为米。
qt代码实现计算两个经纬度之间的距离
以下是一个简单的qt代码实现,用于计算两个经纬度之间的距离:
```cpp
#include <QtCore/QCoreApplication>
#include <QtCore/QtMath>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
double lat1 = 37.7749; // 纬度1
double lon1 = -122.4194; // 经度1
double lat2 = 40.7128; // 纬度2
double lon2 = -74.0060; // 经度2
double R = 6371.0; // 地球半径(千米)
// 将经纬度转换为弧度
double lat1_rad = qDegreesToRadians(lat1);
double lon1_rad = qDegreesToRadians(lon1);
double lat2_rad = qDegreesToRadians(lat2);
double lon2_rad = qDegreesToRadians(lon2);
// 计算两点之间的距离(千米)
double dlon = lon2_rad - lon1_rad;
double dlat = lat2_rad - lat1_rad;
double a = qPow(qSin(dlat / 2), 2) + qCos(lat1_rad) * qCos(lat2_rad) * qPow(qSin(dlon / 2), 2);
double c = 2 * qAtan2(qSqrt(a), qSqrt(1 - a));
double distance = R * c;
qDebug() << "距离:" << distance << "千米";
return a.exec();
}
```
在这个示例中,我们使用了一个简单的公式来计算两个经纬度之间的距离。该公式基于球体上的两点之间的大圆距离公式,其中球体的半径为地球半径(千米)。首先将经纬度转换为弧度,然后使用公式计算两点之间的距离。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)