From: curt Date: Sat, 23 Aug 1997 01:46:20 +0000 (+0000) Subject: Initial revision. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=f8f4cce7440e31a6234afa491c16de807563cd13;p=flightgear.git Initial revision. --- diff --git a/Main/fg_init.c b/Main/fg_init.c new file mode 100644 index 000000000..933cfc259 --- /dev/null +++ b/Main/fg_init.c @@ -0,0 +1,176 @@ +/************************************************************************** + * fg_init.c -- Flight Gear top level initialization routines + * + * Written by Curtis Olson, started August 1997. + * + * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + * (Log is kept at end of this file) + **************************************************************************/ + + +#include +#include + +#include "fg_init.h" + +#include "../constants.h" +#include "../general.h" + +#include "../Aircraft/aircraft.h" +#include "../Math/fg_random.h" +#include "../Scenery/mesh.h" +#include "../Scenery/scenery.h" +#include "../Time/sunpos.h" +#include "../Weather/weather.h" + + +/* General house keeping initializations */ + +void fgInitGeneral( void ) { + struct general_params *g; + + g = &general; + + /* seed the random number generater */ + fg_srandom(); + + /* determine the fg root path */ + if ( (g->root_dir = getenv("FG_ROOT")) == NULL ) { + /* environment variable not defined */ + printf("FG_ROOT needs to be defined! See the documentation.\n"); + exit(0); + } + printf("FG_ROOT = %s\n", g->root_dir); +} + + +/* 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.*/ + +void fgInitSubsystems( void ) { + double cur_elev; + + struct flight_params *f; + + f = ¤t_aircraft.flight; + + /**************************************************************** + * The following section sets up the flight model EOM parameters and + * should really be read in from one or more files. + ****************************************************************/ + + /* Globe Aiport, AZ */ + FG_Runway_altitude = 3234.5; + FG_Runway_latitude = 120070.41; + FG_Runway_longitude = -398391.28; + FG_Runway_heading = 102.0 * DEG_TO_RAD; + + /* Initial Position at GLOBE airport */ + FG_Latitude = ( 120070.41 / 3600.0 ) * DEG_TO_RAD; + FG_Longitude = ( -398391.28 / 3600.0 ) * DEG_TO_RAD; + FG_Altitude = FG_Runway_altitude + 3.758099; + + /* Initial Position north of the city of Globe */ + /* FG_Latitude = ( 120625.64 / 3600.0 ) * DEG_TO_RAD; */ + /* FG_Longitude = ( -398673.28 / 3600.0 ) * DEG_TO_RAD; */ + /* FG_Altitude = 0.0 + 3.758099; */ + + printf("Initial position is: (%.4f, %.4f, %.2f)\n", + FG_Latitude * RAD_TO_DEG, FG_Longitude * RAD_TO_DEG, + FG_Altitude * FEET_TO_METER); + + /* Initial Velocity */ + FG_V_north = 0.0 /* 7.287719E+00 */; + FG_V_east = 0.0 /* 1.521770E+03 */; + FG_V_down = 0.0 /* -1.265722E-05 */; + + /* Initial Orientation */ + FG_Phi = -2.658474E-06; + FG_Theta = 7.401790E-03; + FG_Psi = 270.0 * DEG_TO_RAD; + /* FG_Psi = 0.0 * DEG_TO_RAD; */ + + /* Initial Angular B rates */ + FG_P_body = 7.206685E-05; + FG_Q_body = 0.000000E+00; + FG_R_body = 9.492658E-05; + + FG_Earth_position_angle = 0.000000E+00; + + /* Mass properties and geometry values */ + FG_Mass = 8.547270E+01; + FG_I_xx = 1.048000E+03; + FG_I_yy = 3.000000E+03; + FG_I_zz = 3.530000E+03; + FG_I_xz = 0.000000E+00; + + /* CG position w.r.t. ref. point */ + FG_Dx_cg = 0.000000E+00; + FG_Dy_cg = 0.000000E+00; + FG_Dz_cg = 0.000000E+00; + + /* Set initial position and slew parameters */ + /* fgSlewInit(-398391.3, 120070.41, 244, 3.1415); */ /* GLOBE Airport */ + /* fgSlewInit(-335340,162540, 15, 4.38); */ + /* fgSlewInit(-398673.28,120625.64, 53, 4.38); */ + + /* Initialize shared sun position and sun_vec */ + fgUpdateSunPos(); + + /* Initialize the weather modeling subsystem */ + fgWeatherInit(); + + /* Initialize the Scenery Management subsystem */ + fgSceneryInit(); + + /* Tell the Scenery Management system where we are so it can load + * the correct scenery data */ + fgSceneryUpdate(FG_Latitude, FG_Longitude, FG_Altitude); + + + /* I'm just sticking this here for now, it should probably move + * eventually */ + cur_elev = mesh_altitude(FG_Longitude * RAD_TO_DEG * 3600.0, + FG_Latitude * RAD_TO_DEG * 3600.0); + printf("Ground elevation is %.2f meters here.\n", cur_elev); + if ( cur_elev > -9990.0 ) { + FG_Runway_altitude = cur_elev * METER_TO_FEET; + } + + if ( FG_Altitude < FG_Runway_altitude ) { + FG_Altitude = FG_Runway_altitude + 3.758099; + } + printf("Updated position is: (%.4f, %.4f, %.2f)\n", + FG_Latitude * RAD_TO_DEG, FG_Longitude * RAD_TO_DEG, + FG_Altitude * FEET_TO_METER); + /* end of thing that I just stuck in that I should probably move */ + + + /* Initialize the flight model subsystem data structures base on + * above values */ + fgFlightModelInit( FG_LARCSIM, f, 1.0 / DEFAULT_MODEL_HZ ); +} + + +/* $Log$ +/* Revision 1.1 1997/08/23 01:46:20 curt +/* Initial revision. +/* + */ diff --git a/Main/fg_init.h b/Main/fg_init.h new file mode 100644 index 000000000..4b4372be2 --- /dev/null +++ b/Main/fg_init.h @@ -0,0 +1,47 @@ +/************************************************************************** + * fg_init.h -- Flight Gear top level initialization routines + * + * Written by Curtis Olson, started August 1997. + * + * Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + * (Log is kept at end of this file) + **************************************************************************/ + + +#ifndef FG_INIT_H +#define FG_INIT_H + + +/* General house keeping initializations */ +void fgInitGeneral( void ); + +/* 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.*/ +void fgInitSubsystems( void ); + + +#endif /* FG_INIT_H */ + + +/* $Log$ +/* Revision 1.1 1997/08/23 01:46:20 curt +/* Initial revision. +/* + */