double
FGBFI::getMagVar ()
{
- return cur_magvar.get_magvar() * RAD_TO_DEG;
+ return globals->get_mag()->get_magvar() * RAD_TO_DEG;
}
double
FGBFI::getMagDip ()
{
- return cur_magvar.get_magdip() * RAD_TO_DEG;
+ return globals->get_mag()->get_magdip() * RAD_TO_DEG;
}
#include <simgear/ephemeris/ephemeris.hxx>
+#include <simgear/magvar/magvar.hxx>
#include <simgear/timing/sg_time.hxx>
// Sky structures
SGEphemeris *ephem;
+ // Magnetic Variation
+ SGMagVar *mag;
+
public:
FGGlobals();
inline SGEphemeris *get_ephem() const { return ephem; }
inline void set_ephem( SGEphemeris *e ) { ephem = e; }
+
+ inline SGMagVar *get_mag() const { return mag; }
+ inline void set_mag( SGMagVar *m ) { mag = m; }
};
}
// update magvar model
- cur_magvar.update( cur_fdm_state->get_Longitude(),
- cur_fdm_state->get_Latitude(),
- cur_fdm_state->get_Altitude()* FEET_TO_METER,
- globals->get_time_params()->getJD() );
+ globals->get_mag()->update( cur_fdm_state->get_Longitude(),
+ cur_fdm_state->get_Latitude(),
+ cur_fdm_state->get_Altitude()* FEET_TO_METER,
+ globals->get_time_params()->getJD() );
// Get elapsed time (in usec) for this past frame
elapsed = fgGetTimeInterval();
// thesky->add_cloud_layer( 1800.0, 400.0, 100.0, SG_CLOUD_OVERCAST );
// thesky->add_cloud_layer( 5000.0, 20.0, 10.0, SG_CLOUD_CIRRUS );
+ // Initialize MagVar model
+ SGMagVar *magvar = new SGMagVar();
+ globals->set_mag( magvar );
+
// Terrain branch
terrain = new ssgBranch;
terrain->setName( "Terrain" );
#include "tmp.hxx"
-FGMagVar::FGMagVar() {
-}
-
-FGMagVar::~FGMagVar() {
-}
-
-
-void FGMagVar::update( double lon, double lat, double alt_m, double jd ) {
- // Calculate local magnetic variation
- double field[6];
- // cout << "alt_m = " << alt_m << endl;
- magvar = SGMagVar( lat, lon, alt_m / 1000.0, (long)jd, field );
- magdip = atan(field[5]/sqrt(field[3]*field[3]+field[4]*field[4]));
-}
-
-FGMagVar cur_magvar;
-
-
// periodic time updater wrapper
void fgUpdateLocalTime() {
FGPath zone( current_options.get_fg_root() );
// update sky and lighting parameters
void fgUpdateSkyAndLightingParams();
-class FGMagVar {
-
-private:
-
- double magvar;
- double magdip;
-
-public:
-
- FGMagVar();
- ~FGMagVar();
-
- void update( double lon, double lat, double alt_m, double jd );
-
- double get_magvar() const { return magvar; }
- double get_magdip() const { return magdip; }
-};
-
-extern FGMagVar cur_magvar;
-
#endif // _LIGHT_HXX