Additional sun and moon position values calculated from new FGEphemeris class.
#include "fg_time.hxx"
#include "timezone.h"
#include "lowleveltime.h"
+#include "moonpos.hxx"
+#include "sunpos.hxx"
#define DEGHR(x) ((x)/15.)
// Initialize the time dependent variables (maybe I'll put this in the
// constructor later)
-void FGTime::init(const FGInterface& f)
-{
+void FGTime::init( double lon, double lat ) {
FG_LOG( FG_EVENT, FG_INFO, "Initializing Time" );
gst_diff = -9999.0;
FG_LOG( FG_EVENT, FG_DEBUG,
// printf ("Current greenwich mean time = %24s", asctime(gmtime(&cur_time)));
// printf ("Current local time = %24s", asctime(localtime(&cur_time)));
// time_t tmp = cur_time;
- GeoCoord location(RAD_TO_DEG * f.get_Latitude(),
- RAD_TO_DEG * f.get_Longitude());
+ GeoCoord location( RAD_TO_DEG * lat, RAD_TO_DEG * lon );
GeoCoord* nearestTz = tzContainer->getNearest(location);
// Update time variables such as gmt, julian date, and sidereal time
-void FGTime::update(const FGInterface& f)
-{
+void FGTime::update( double lon ) {
double gst_precise, gst_course;
FG_LOG( FG_EVENT, FG_DEBUG, "Updating time" );
gst_diff = gst_precise - gst_course;
- lst = sidereal_course(-(f.get_Longitude() * RAD_TO_DEG)) + gst_diff;
+ lst = sidereal_course(-(lon * RAD_TO_DEG)) + gst_diff;
} else {
// course + difference should drift off very slowly
- gst = sidereal_course( 0.00 ) + gst_diff;
- lst = sidereal_course( -(f.get_Longitude() * RAD_TO_DEG)) + gst_diff;
+ gst = sidereal_course( 0.00 ) + gst_diff;
+ lst = sidereal_course( -(lon * RAD_TO_DEG)) + gst_diff;
}
FG_LOG( FG_EVENT, FG_DEBUG,
" Current lon=0.00 Sidereal Time = " << gst );
FG_LOG( FG_EVENT, FG_DEBUG,
" Current LOCAL Sidereal Time = " << lst << " ("
- << sidereal_precise(-(f.get_Longitude() * RAD_TO_DEG))
+ << sidereal_precise(-(lon * RAD_TO_DEG))
<< ") (diff = " << gst_diff << ")" );
}
// Force an update of the sky and lighting parameters
void FGTime::local_update_sky_and_lighting_params( void ) {
- // fgSunInit();
- SolarSystem::theSolarSystem->rebuild();
+ fgUpdateSunPos();
+ fgUpdateMoonPos();
cur_light_params.Update();
- /* current_sky.repaint( cur_light_params.sky_color,
- cur_light_params.fog_color,
- cur_light_params.sun_angle ); */
}
void togglePauseMode() { pause = !pause; };
// Initialize the time dependent variables
- void init(const FGInterface& f);
+ void init( double lon, double lat );
// Update the time dependent variables
- void update(const FGInterface& f);
+ void update( double lon );
void updateLocal();
void cal_mjd (int mn, double dy, int yr);
#include <simgear/math/polar3d.hxx>
#include <simgear/math/vector.hxx>
-#include <Astro/solarsystem.hxx>
+#include <Astro/ephemeris.hxx>
#include <Main/views.hxx>
#include <Scenery/scenery.hxx>
#include "fg_time.hxx"
#include "moonpos.hxx"
-extern SolarSystem *solarSystem;
+// extern SolarSystem *solarSystem;
+extern FGEphemeris *ephem;
#undef E
* every ten minutes. (Comment added by Durk Talsma).
************************************************************************/
- ecliptic_to_equatorial( SolarSystem::theSolarSystem->getMoon()->getLon(),
+ ecliptic_to_equatorial( ephem->get_moon()->getLon(),
0.0, &alpha, &delta );
tmp = alpha - (FG_2PI/24)*GST(ssue);
if (tmp < -FG_PI) {
/* lambda = moon_ecliptic_longitude(ssue); */
/* ecliptic_to_equatorial(lambda, 0.0, &alpha, &delta); */
//ecliptic_to_equatorial (solarPosition.lonMoon, 0.0, &alpha, &delta);
- ecliptic_to_equatorial( SolarSystem::theSolarSystem->getMoon()->getLon(),
- SolarSystem::theSolarSystem->getMoon()->getLat(),
+ ecliptic_to_equatorial( ephem->get_moon()->getLon(),
+ ephem->get_moon()->getLat(),
&alpha, &delta );
// tmp = alpha - (FG_2PI/24)*GST(ssue);
#include <simgear/math/polar3d.hxx>
#include <simgear/math/vector.hxx>
-#include <Astro/solarsystem.hxx>
+#include <Astro/ephemeris.hxx>
#include <Main/views.hxx>
#include <Scenery/scenery.hxx>
#include "fg_time.hxx"
#include "sunpos.hxx"
-extern SolarSystem *solarSystem;
+// extern SolarSystem *solarSystem;
+extern FGEphemeris *ephem;
#undef E
#define MeanObliquity (23.440592*(FG_2PI/360))
* every ten minutes. (Comment added by Durk Talsma).
************************************************************************/
- ecliptic_to_equatorial( SolarSystem::theSolarSystem->getSun()->getLon(),
+ ecliptic_to_equatorial( ephem->get_sun()->getLon(),
0.0, &alpha, &delta );
tmp = alpha - (FG_2PI/24)*GST(ssue);
if (tmp < -FG_PI) {
/* lambda = sun_ecliptic_longitude(ssue); */
/* ecliptic_to_equatorial(lambda, 0.0, &alpha, &delta); */
//ecliptic_to_equatorial (solarPosition.lonSun, 0.0, &alpha, &delta);
- ecliptic_to_equatorial( SolarSystem::theSolarSystem->getSun()->getLon(),
- SolarSystem::theSolarSystem->getSun()->getLat(),
- &alpha, &delta );
+ ecliptic_to_equatorial( ephem->get_sun()->getLon(),
+ ephem->get_sun()->getLat(),
+ &alpha, &delta );
// tmp = alpha - (FG_2PI/24)*GST(ssue);
tmp = alpha - (FG_2PI/24)*gst;