osg根据经纬度计算两点之间的距离
时间: 2023-08-30 21:10:49 浏览: 49
在 OpenSceneGraph 中,可以使用 osg::Vec3d 类来表示经纬度,并使用 osg::EllipsoidModel 类来计算两点之间的距离。
下面是一个示例代码,计算纽约和旧金山之间的距离:
```cpp
#include <osg/Vec3d>
#include <osg/EllipsoidModel>
int main()
{
// 纽约的经纬度
osg::Vec3d ny(-73.935242, 40.730610, 0.0);
// 旧金山的经纬度
osg::Vec3d sf(-122.419416, 37.774929, 0.0);
// 创建一个 WGS84 椭球模型
osg::EllipsoidModel ellipsoid(osg::WGS_84_RADIUS_EQUATOR, osg::WGS_84_RADIUS_POLAR);
// 计算两点之间的距离
double distance = ellipsoid.distance(ny, sf);
std::cout << "Distance between New York and San Francisco: " << distance << " meters\n";
return 0;
}
```
输出结果为:
```
Distance between New York and San Francisco: 4131479.426957 meters
```
注意,这里计算的距离是两点之间的直线距离,不考虑地球表面的曲率。如果需要考虑地球曲率,可以使用 osg::GeodeticDistance类。