- 功能
设置时间改变太阳和星空的位置,显示当前太阳和月球的星下点;
2.代码解析
设置时间
SkyNode* sky;
sky = osgEarth::findTopMostNodeOfType<SkyNode>(node);
sky->setDateTime(DateTime(t));
获取星下点
//获取星历表
ephemeris=sky->getEphemeris();
if ( ephemeris )
{
const DateTime& dt = sky->getDateTime();
CelestialBody sun = ephemeris->getSunPosition(dt);
GeoPoint sunPos;
sunPos.fromWorld(mapNode->getMapSRS(), sun.geocentric);
sunPos.alt() = 0.0;
app.sunPos->setPosition( sunPos );
app.sunPos->setText( "Sun\n" + llf.format(sunPos) );
CelestialBody moon = ephemeris->getMoonPosition(dt);
GeoPoint moonPos;
moonPos.fromWorld(mapNode->getMapSRS(), moon.geocentric);
moonPos.alt() = 0.0;
app.moonPos->setPosition( moonPos );
app.moonPos->setText( "Moon\n" + llf.format(moonPos) );
}