2016-09-22 245 views
0

我一直在练习OSG提供的一些openSceneGraph的例子。其中一个例子,我遇到了椭球体上的文字。椭圆体到OSG的球体

osgText::Text* createText(osg::EllipsoidModel* ellipsoid, double latitude, double longitude, double height, const std::string& str) 
{ 
    double X, Y, Z; 
    ellipsoid->convertLatLongHeightToXYZ(osg::DegreesToRadians(latitude), osg::DegreesToRadians(longitude), height, X, Y, Z); 

这对我的情况很好,然后我想对球体也做同样的事情。在这个例子中,基于lat,long和height绘制椭圆体。我想画半径取决于窗口大小/屏幕大小的球体。不幸的是,我没有看到在osg :: Sphere类中将屏幕坐标转换为球体大小。

有人可以帮助我解决这个问题。可能有些东西可以改变这种情况,也可能是因为我的经验不足而没有遇到。

干杯, Inna。

回答

0

osg :: Sphere不是像osg :: EllipsoidModel这样的地理空间模型。

只需创建一个osg :: EllipsoidModel,其中两个Radii(赤道和极坐标)与您希望的球体半径相同,并使用osg :: EllipsoidModel。

+0

嗨@XenonofArcticus先生我已经试过了,如你所说。但我没有把结果看作是球体。 **双纬度= 360.0;” '双经度= 360.0; // - 100' ** ,然后我使用它为椭球模型 **'geode-> addDrawable(createText(椭球,纬度,lgnt ,0,textList [t%textList.size()]));'** – Inna

+0

我是否缺少任何传输? – Inna

+0

纬度是360是一个非感性数字 显示我如何创建一些实际的代码EllipsoidModel并使用它。此外,这不是一个好的问题堆栈溢出。我建议我们继续在osg-users邮件列表中,并且你删除这个问题。 – XenonofArcticus