osg根据经纬度计算两点之间的距离的公式
时间: 2024-05-31 19:08:13 浏览: 201
在使用OpenSceneGraph (OSG)计算两点之间的距离时,可以使用以下公式:
d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1))
其中,d表示两点之间的距离,R表示地球半径,lat1和lon1表示第一个点的纬度和经度,lat2和lon2表示第二个点的纬度和经度。
在OSG中,可以使用以下代码实现此公式:
double distance(double lat1, double lon1, double lat2, double lon2)
{
const double R = 6371.0; // 地球半径,单位为千米
lat1 = osg::DegreesToRadians(lat1);
lon1 = osg::DegreesToRadians(lon1);
lat2 = osg::DegreesToRadians(lat2);
lon2 = osg::DegreesToRadians(lon2);
double dlon = lon2 - lon1;
double dlat = lat2 - lat1;
double a = pow(sin(dlat / 2), 2) + cos(lat1) * cos(lat2) * pow(sin(dlon / 2), 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return R * c;
}
其中,osg::DegreesToRadians()函数用于将角度转换为弧度。
阅读全文