#include <Aircraft/aircraft.h>
#include <Airports/simple.hxx>
-#include <Astro/moon.hxx>
-#include <Astro/planets.hxx>
+// #include <Astro/moon.hxx>
+// #include <Astro/planets.hxx>
#include <Astro/sky.hxx>
#include <Astro/stars.hxx>
-#include <Astro/sun.hxx>
-#include <Autopilot/autopilot.h>
+// #include <Astro/sun.hxx>
+#include <Astro/solarsystem.hxx>
+#include <Autopilot/autopilot.hxx>
#include <Cockpit/cockpit.hxx>
#include <Debug/fg_debug.h>
#include <Joystick/joystick.h>
-#include <Math/fg_geodesy.h>
+#include <Math/fg_geodesy.hxx>
#include <Math/fg_random.h>
+#include <Math/point3d.hxx>
#include <Math/polar3d.hxx>
#include <Scenery/scenery.hxx>
#include <Scenery/tilemgr.hxx>
id.c_str() );
airports.load("apt_simple");
- a = airports.search( (char *)id.c_str() );
- if ( (fabs(a.longitude) < FG_EPSILON) &&
- (fabs(a.latitude) < FG_EPSILON) &&
- (fabs(a.elevation) < FG_EPSILON) ) {
+ if ( ! airports.search( id, &a ) ) {
fgPrintf( FG_GENERAL, FG_EXIT,
"Failed to find %s in database.\n", id.c_str() );
} else {
- FG_Longitude = ( a.longitude ) * DEG_TO_RAD;
- FG_Latitude = ( a.latitude ) * DEG_TO_RAD;
+ FG_Longitude = a.longitude * DEG_TO_RAD;
+ FG_Latitude = a.latitude * DEG_TO_RAD;
}
} else {
// set initial position from default or command line coordinates
}
-// convert a geodetic point lon(radians), lat(radians), elev(meter) to
-// a cartesian point
-fgPoint3d geod_to_cart(double geod[3]) {
- fgPoint3d cp;
- fgPoint3d pp;
- double gc_lon, gc_lat, sl_radius;
-
- // printf("A geodetic point is (%.2f, %.2f, %.2f)\n",
- // geod[0], geod[1], geod[2]);
-
- gc_lon = geod[0];
- fgGeodToGeoc(geod[1], geod[2], &sl_radius, &gc_lat);
-
- // printf("A geocentric point is (%.2f, %.2f, %.2f)\n", gc_lon,
- // gc_lat, sl_radius+geod[2]);
-
- pp.lon = gc_lon;
- pp.lat = gc_lat;
- pp.radius = sl_radius + geod[2];
- cp = fgPolarToCart3d(pp);
-
- // printf("A cart point is (%.8f, %.8f, %.8f)\n", cp.x, cp.y, cp.z);
-
- return(cp);
-}
-
-
// This is the top level init routine which calls all the other
// initialization routines. If you are adding a subsystem to flight
// gear, its initialization call should located in this routine.
fgLIGHT *l;
fgTIME *t;
fgVIEW *v;
- double geod_pos[3];
- fgPoint3d abs_view_pos;
+ Point3D geod_pos, abs_view_pos;
l = &cur_light_params;
t = &cur_time_params;
}
// calculalate a cartesian point somewhere along the line between
- // the center of the earth and our view position
- geod_pos[0] = FG_Longitude;
- geod_pos[1] = FG_Latitude;
- // doesn't have to be the exact elevation (this is good because we
- // don't know it yet :-)
- geod_pos[2] = 0;
- abs_view_pos = geod_to_cart(geod_pos);
+ // the center of the earth and our view position. Doesn't have to
+ // be the exact elevation (this is good because we don't know it
+ // yet :-)
+ geod_pos.setvals( FG_Longitude, FG_Latitude, 0.0);
+ abs_view_pos = fgGeodToCart(geod_pos);
// Calculate ground elevation at starting point
scenery.cur_elev =
- fgTileMgrCurElev( FG_Longitude, FG_Latitude, &abs_view_pos );
+ fgTileMgrCurElev( FG_Longitude, FG_Latitude, abs_view_pos );
FG_Runway_altitude = scenery.cur_elev * METER_TO_FEET;
// Reset our altitude if we are below ground
v->UpdateViewMath(f);
v->UpdateWorldToEye(f);
- // Initialize the orbital elements of sun, moon and mayor planets
- fgSolarSystemInit(*t);
+ // Build the solar system
+ //fgSolarSystemInit(*t);
+ fgPrintf(FG_GENERAL, FG_INFO, "Building SolarSystem\n");
+ SolarSystem::theSolarSystem = new SolarSystem(t);
// Initialize the Stars subsystem
if( fgStarsInit() ) {
}
// Initialize the planetary subsystem
- global_events.Register( "fgPlanetsInit()", fgPlanetsInit,
- fgEVENT::FG_EVENT_READY, 600000);
+ // global_events.Register( "fgPlanetsInit()", fgPlanetsInit,
+ // fgEVENT::FG_EVENT_READY, 600000);
// Initialize the sun's position
- global_events.Register( "fgSunInit()", fgSunInit,
- fgEVENT::FG_EVENT_READY, 30000 );
+ // global_events.Register( "fgSunInit()", fgSunInit,
+ // fgEVENT::FG_EVENT_READY, 30000 );
// Intialize the moon's position
- global_events.Register( "fgMoonInit()", fgMoonInit,
- fgEVENT::FG_EVENT_READY, 600000 );
+ // global_events.Register( "fgMoonInit()", fgMoonInit,
+ // fgEVENT::FG_EVENT_READY, 600000 );
+ // register the periodic update of Sun, moon, and planets
+ global_events.Register( "ssolsysUpdate", solarSystemRebuild,
+ fgEVENT::FG_EVENT_READY, 600000);
+
// fgUpdateSunPos() needs a few position and view parameters set
// so it can calculate local relative sun angle and a few other
// things for correctly orienting the sky.
fgUpdateSunPos();
+ global_events.Register( "fgUpdateSunPos()", fgUpdateSunPos,
+ fgEVENT::FG_EVENT_READY, 60000);
// Initialize Lighting interpolation tables
l->Init();
// Initialize the weather modeling subsystem
fgWeatherInit();
- // update the weather for our current position
- global_events.Register( "fgWeatherUpdate()", fgWeatherUpdate,
- fgEVENT::FG_EVENT_READY, 120000 );
-
// Initialize the Cockpit subsystem
if( fgCockpitInit( ¤t_aircraft )) {
// Cockpit initialized ok.
// $Log$
+// Revision 1.42 1998/10/16 23:27:54 curt
+// C++-ifying.
+//
+// Revision 1.41 1998/10/16 00:54:01 curt
+// Converted to Point3D class.
+//
+// Revision 1.40 1998/10/02 12:46:49 curt
+// Added an "auto throttle"
+//
+// Revision 1.39 1998/09/29 02:03:39 curt
+// Autopilot mods.
+//
+// Revision 1.38 1998/09/15 04:27:30 curt
+// Changes for new Astro code.
+//
+// Revision 1.37 1998/09/15 02:09:26 curt
+// Include/fg_callback.hxx
+// Moved code inline to stop g++ 2.7 from complaining.
+//
+// Simulator/Time/event.[ch]xx
+// Changed return type of fgEVENT::printStat(). void caused g++ 2.7 to
+// complain bitterly.
+//
+// Minor bugfix and changes.
+//
+// Simulator/Main/GLUTmain.cxx
+// Added missing type to idle_state definition - eliminates a warning.
+//
+// Simulator/Main/fg_init.cxx
+// Changes to airport lookup.
+//
+// Simulator/Main/options.cxx
+// Uses fg_gzifstream when loading config file.
+//
// Revision 1.36 1998/09/08 21:40:08 curt
// Fixes by Charlie Hotchkiss.
//