使用現成的橢球類EllipsoidModel的座標轉換函數可以實現
inline void EllipsoidModel::convertLatLongHeightToXYZ(double latitude, double longitude, double height,
double& X, double& Y, double& Z) const
函數參數表的前三位是經緯度高程(latitude, longitude,height),一般口頭喊的順序是 經緯度經緯度,但是這裏參數順序是爲緯經度,所以如果定義的地理座標向量是
osg::Vec3 pos(經度,緯度,高程)
的話,在調用上面的函數時候傳參就要調換x,y的順序,並且將度數轉換成弧度,如下
convertLatLongHeightToXYZ(osg::DegreesToRadians(pos.y()), osg::DegreesToRadians(pos.x()), pos.z(), world.x(), world.y(), world.z());
如果沒有轉換成弧度的話位置偏差會很大