osg根据经纬度计算两点之间的距离
时间: 2023-08-31 08:09:53 浏览: 223
根据经纬度计算两点之间的距离
在osg中,可以使用osg::Vec3d类来表示经纬度坐标,然后使用osg::Vec3d::distance方法计算两点之间的距离。具体实现如下:
```cpp
#include <osg/Vec3d>
// 计算两个经纬度坐标之间的距离
double calculateDistance(osg::Vec3d point1, osg::Vec3d point2)
{
// 将经纬度坐标转换为三维坐标,其中Z轴表示海拔高度,这里不考虑海拔高度
osg::Vec3d cartesian1 = osg::Vec3d(
osg::DegreesToRadians(point1.x()) * osg::WGS_84_RADIUS_EQUATOR,
osg::DegreesToRadians(point1.y()) * osg::WGS_84_RADIUS_EQUATOR,
0.0);
osg::Vec3d cartesian2 = osg::Vec3d(
osg::DegreesToRadians(point2.x()) * osg::WGS_84_RADIUS_EQUATOR,
osg::DegreesToRadians(point2.y()) * osg::WGS_84_RADIUS_EQUATOR,
0.0);
// 使用osg::Vec3d::distance方法计算两个三维坐标之间的距离
return cartesian1.distance(cartesian2);
}
```
在上述代码中,使用了osg::DegreesToRadians函数将角度转换为弧度,并使用osg::WGS_84_RADIUS_EQUATOR常量表示地球赤道半径,其中1度对应的弧长为111.32km。
阅读全文