From b830d977828b67f877dce37ea740431656513bfe Mon Sep 17 00:00:00 2001 From: curt Date: Thu, 4 Sep 1997 02:17:18 +0000 Subject: [PATCH] Shufflin' stuff. --- Cockpit/depend | 28 ++++++++++++++++++++-- Cockpit/hud.c | 27 +++++++++++---------- FDM/flight.h | 21 ++++------------- Main/GLUTmain.c | 58 +++++++++++++++++----------------------------- Main/Makefile | 5 +++- Main/depend | 45 +++++++++++++++++------------------ Main/fg_init.c | 18 ++++++++++---- Scenery/depend | 12 ++++++++-- Scenery/scenery.h | 10 ++++++-- Scenery/stars.c | 13 ++++------- Simulator/Makefile | 36 +++++++++++++++++++++++----- Simulator/make.inc | 5 +++- Time/depend | 9 +++++-- Time/fg_time.h | 18 +++++++++++--- Time/sunpos.c | 35 ++++++++++++++++++++++++---- Time/sunpos.h | 3 ++- 16 files changed, 219 insertions(+), 124 deletions(-) diff --git a/Cockpit/depend b/Cockpit/depend index 2d0d3ec52..a271456de 100644 --- a/Cockpit/depend +++ b/Cockpit/depend @@ -1,6 +1,30 @@ -hud.o: cockpit.c cockpit.h hud.c hud.h ../Aircraft/aircraft.h \ +cockpit.o: cockpit.c cockpit.h hud.h ../Aircraft/aircraft.h \ ../Aircraft/../Flight/flight.h ../Aircraft/../Flight/Slew/slew.h \ ../Aircraft/../Flight/LaRCsim/ls_interface.h \ ../Aircraft/../Flight/LaRCsim/../flight.h \ ../Aircraft/../Controls/controls.h \ - ../Aircraft/../Controls/../limits.h ../Math/fg_random.h + ../Aircraft/../Controls/../limits.h ../Flight/flight.h \ + ../Controls/controls.h ../constants.h ../Scenery/mesh.h \ + ../Scenery/scenery.h ../Scenery/../types.h ../Math/mat3.h \ + ../Math/polar.h ../Math/../types.h ../Time/fg_timer.h \ + ../Math/fg_random.h ../Weather/weather.h +hud.o: hud.c hud.h ../Aircraft/aircraft.h \ + ../Aircraft/../Flight/flight.h ../Aircraft/../Flight/Slew/slew.h \ + ../Aircraft/../Flight/LaRCsim/ls_interface.h \ + ../Aircraft/../Flight/LaRCsim/../flight.h \ + ../Aircraft/../Controls/controls.h \ + ../Aircraft/../Controls/../limits.h ../Flight/flight.h \ + ../Controls/controls.h ../constants.h ../Scenery/mesh.h \ + ../Scenery/scenery.h ../Scenery/../types.h ../Math/mat3.h \ + ../Math/polar.h ../Math/../types.h ../Time/fg_timer.h \ + ../Math/fg_random.h ../Weather/weather.h +test.o: test.c test.h ../Aircraft/aircraft.h \ + ../Aircraft/../Flight/flight.h ../Aircraft/../Flight/Slew/slew.h \ + ../Aircraft/../Flight/LaRCsim/ls_interface.h \ + ../Aircraft/../Flight/LaRCsim/../flight.h \ + ../Aircraft/../Controls/controls.h \ + ../Aircraft/../Controls/../limits.h ../Flight/flight.h \ + ../Controls/controls.h ../constants.h ../Scenery/mesh.h \ + ../Scenery/scenery.h ../Scenery/../types.h ../Math/mat3.h \ + ../Math/polar.h ../Math/../types.h ../Time/fg_timer.h \ + ../Math/fg_random.h ../Weather/weather.h diff --git a/Cockpit/hud.c b/Cockpit/hud.c index 453a8dd84..1c698753d 100644 --- a/Cockpit/hud.c +++ b/Cockpit/hud.c @@ -25,8 +25,10 @@ #include - #include +#ifndef WIN32 +# include /* for MAXINT */ +#endif /* not WIN32 */ #include "hud.h" #include "../constants.h" @@ -392,10 +394,10 @@ static void drawhorizon( struct HUD_horizon horizon ) bank_angle = (*horizon.load_value)(); - // sin_bank = sin( 2*PI-FG_Phi ); - // cos_bank = cos( 2*PI-FG_Phi ); - sin_bank = sin(2*PI-bank_angle); - cos_bank = cos(2*PI-bank_angle); + // sin_bank = sin( FG_2PI-FG_Phi ); + // cos_bank = cos( FG_2PI-FG_Phi ); + sin_bank = sin(FG_2PI-bank_angle); + cos_bank = cos(FG_2PI-bank_angle); x_inc1 = (int)(horizon.scr_width*cos_bank); y_inc1 = (int)(horizon.scr_width*sin_bank); x_inc2 = (int)(horizon.scr_hole*cos_bank); @@ -531,13 +533,13 @@ Hptr fgHUDInit( struct AIRCRAFT current_aircraft, int color ) hud->code = 123; hud->status = 0; - // For now let's just hardcode a hud here . + // For now lets just hardcode a hud here . // In the future, hud information has to come from the same place // aircraft information came fgHUDAddHorizon( hud, 590, 50, 40, 20, get_roll ); fgHUDAddScale( hud, VERTICAL, 220, 100, 280, 5, 10, LEFT, LEFT, 0, 100, get_speed ); - fgHUDAddScale( hud, VERTICAL, 440, 100, 280, 1, 5, RIGHT, RIGHT, -MAXINT, 25, get_aoa ); + fgHUDAddScale( hud, VERTICAL, 440, 100, 280, 1, 5, RIGHT, RIGHT, -400, 25, get_aoa ); fgHUDAddScale( hud, HORIZONTAL, 280, 220, 440, 5, 10, TOP, TOP, 0, 50, get_heading ); fgHUDAddLabel( hud, 180, 85, SMALL, NOBLINK, RIGHT_JUST, NULL, " Kts", "%5.0f", get_speed ); fgHUDAddLabel( hud, 180, 73, SMALL, NOBLINK, RIGHT_JUST, NULL, " m", "%5.0f", get_altitude ); @@ -546,7 +548,6 @@ Hptr fgHUDInit( struct AIRCRAFT current_aircraft, int color ) return( hud ); } - Hptr fgHUDAddHorizon( Hptr hud, int x_pos, int y_pos, int length, \ int hole_len, double (*load_value)() ) { @@ -683,7 +684,7 @@ Hptr fgHUDAddLadder( Hptr hud, int x_pos, int y_pos, int scr_width, int scr_heig ladder = (struct HUD_ladder *)calloc(sizeof(struct HUD_ladder),1); if( ladder == NULL ) return( NULL ); - + instrument->type = LADDER; instrument->instr = *ladder; instrument->instr.ladder.type = 0; // Not used. @@ -702,7 +703,6 @@ Hptr fgHUDAddLadder( Hptr hud, int x_pos, int y_pos, int scr_width, int scr_heig hud->instruments = instrument; return( hud ); - } /* @@ -799,7 +799,10 @@ void fgUpdateHUD( Hptr hud ) /* $Log$ -/* Revision 1.1 1997/08/29 18:03:22 curt -/* Initial revision. +/* Revision 1.2 1997/09/04 02:17:30 curt +/* Shufflin' stuff. /* + * Revision 1.1 1997/08/29 18:03:22 curt + * Initial revision. + * */ diff --git a/FDM/flight.h b/FDM/flight.h index c9196ed56..c06d1d99c 100644 --- a/FDM/flight.h +++ b/FDM/flight.h @@ -44,20 +44,6 @@ #define FG_EXTERN_NET 8 -/* Define a structure containing the shared flight model parameters */ -/* struct flight_params { - double pos_x, pos_y, pos_z; - double vel_x, vel_y, vel_z; - - double Phi; - double Theta; - double Psi; - double vel_Phi; - double vel_Theta; - double vel_Psi; -}; */ - - typedef double FG_VECTOR_3[3]; /* This is based heavily on LaRCsim/ls_generic.h */ @@ -410,9 +396,12 @@ int fgFlightModelUpdate(int model, struct FLIGHT *f, int multiloop); /* $Log$ -/* Revision 1.8 1997/08/27 03:30:06 curt -/* Changed naming scheme of basic shared structures. +/* Revision 1.9 1997/09/04 02:17:33 curt +/* Shufflin' stuff. /* + * Revision 1.8 1997/08/27 03:30:06 curt + * Changed naming scheme of basic shared structures. + * * Revision 1.7 1997/07/23 21:52:19 curt * Put comments around the text after an #endif for increased portability. * diff --git a/Main/GLUTmain.c b/Main/GLUTmain.c index 383859400..2f74301ea 100644 --- a/Main/GLUTmain.c +++ b/Main/GLUTmain.c @@ -69,7 +69,7 @@ struct VIEW current_view; static GLfloat win_ratio = 1.0; /* sun direction */ -static GLfloat sun_vec[4] = {1.0, 0.0, 0.0, 0.0 }; +/* static GLfloat sun_vec[4] = {1.0, 0.0, 0.0, 0.0 }; */ /* if the 4th field is 0.0, this specifies a direction ... */ /* clear color (sky) */ @@ -86,10 +86,6 @@ static GLfloat fgFogColor[4] = {0.65, 0.65, 0.85, 1.0}; /* pointer to scenery structure */ /* static GLint scenery, runway; */ -/* Another hack */ -/* double view_offset = 0.0; -double goal_view_offset = 0.0; */ - double Simtime; /* Another hack */ @@ -104,8 +100,10 @@ int show_hud; **************************************************************************/ static void fgInitVisuals() { + struct fgTIME *t; struct WEATHER *w; + t = &cur_time_params; w = ¤t_weather; glEnable( GL_DEPTH_TEST ); @@ -116,7 +114,7 @@ static void fgInitVisuals() { to unit length after transformation. See glNormal. */ glEnable( GL_NORMALIZE ); - glLightfv( GL_LIGHT0, GL_POSITION, sun_vec ); + glLightfv( GL_LIGHT0, GL_POSITION, t->sun_vec ); glEnable( GL_LIGHTING ); glEnable( GL_LIGHT0 ); @@ -143,8 +141,7 @@ static void fgUpdateViewParams() { struct FLIGHT *f; struct fgTIME *t; struct VIEW *v; - MAT3vec nup, nsun; - double sun_angle, temp, ambient, diffuse, sky; + double ambient, diffuse, sky; GLfloat color[4] = { 1.0, 1.0, 0.50, 1.0 }; GLfloat amb[3], diff[3], fog[4], clear[4]; @@ -170,24 +167,17 @@ static void fgUpdateViewParams() { v->view_up[0], v->view_up[1], v->view_up[2]); /* set the sun position */ - glLightfv( GL_LIGHT0, GL_POSITION, sun_vec ); + glLightfv( GL_LIGHT0, GL_POSITION, t->sun_vec ); /* calculate lighting parameters based on sun's relative angle to * local up */ - MAT3_COPY_VEC(nup, v->local_up); - nsun[0] = t->fg_sunpos.x; - nsun[1] = t->fg_sunpos.y; - nsun[2] = t->fg_sunpos.z; - MAT3_NORMALIZE_VEC(nup, temp); - MAT3_NORMALIZE_VEC(nsun, temp); - - sun_angle = acos(MAT3_DOT_PRODUCT(nup, nsun)); - printf("SUN ANGLE relative to current location = %.3f rads.\n", sun_angle); - /* ya kind'a have to plot this to see the magic */ - ambient = 0.4 * pow(2.4, -sun_angle*sun_angle*sun_angle*sun_angle/3.0); - diffuse = 0.4 * cos(0.6*sun_angle*sun_angle); - sky = 0.85 * pow(1.6, -sun_angle*sun_angle*sun_angle*sun_angle/2.0) + 0.15; + ambient = 0.4 * + pow(2.4, -t->sun_angle*t->sun_angle*t->sun_angle*t->sun_angle / 3.0); + diffuse = 0.4 * cos(0.6 * t->sun_angle * t->sun_angle); + sky = 0.85 * + pow(1.6, -t->sun_angle*t->sun_angle*t->sun_angle*t->sun_angle/2.0) + + 0.15; if ( ambient < 0.1 ) { ambient = 0.1; } if ( diffuse < 0.0 ) { diffuse = 0.0; } @@ -240,10 +230,8 @@ static void fgUpdateVisuals( void ) { fgSceneryRender(); /* display HUD */ - if( show_hud ) { + if( show_hud ) fgCockpitUpdate(); - /* fgUpdateHUD(); */ - } #ifdef GLUT glutSwapBuffers(); @@ -274,14 +262,7 @@ void fgUpdateTimeDepCalcs(int multi_loop) { fgFlightModelUpdate(FG_LARCSIM, f, multi_loop); /* refresh shared sun position and sun_vec */ - fgUpdateSunPos(); - - /* the sun position has to be translated just like everything else */ - sun_vec[0] = t->fg_sunpos.x - scenery.center.x; - sun_vec[1] = t->fg_sunpos.y - scenery.center.y; - sun_vec[2] = t->fg_sunpos.z - scenery.center.z; - /* make this a directional light source only */ - sun_vec[3] = 0.0; + fgUpdateSunPos(scenery.center); /* update the view angle */ for ( i = 0; i < multi_loop; i++ ) { @@ -420,8 +401,8 @@ static void fgMainLoop( void ) { f = ¤t_aircraft.flight; /* Read joystick */ - /* fgJoystickRead( &joy_x, &joy_y, &joy_b1, &joy_b2 ); */ - /* printf( "Joystick X %f Y %f B1 %d B2 %d\n", + /* fgJoystickRead( &joy_x, &joy_y, &joy_b1, &joy_b2 ); + printf( "Joystick X %f Y %f B1 %d B2 %d\n", joy_x, joy_y, joy_b1, joy_b2 ); fgElevSet( -joy_y ); fgAileronSet( joy_x ); */ @@ -574,9 +555,12 @@ int main( int argc, char *argv[] ) { /* $Log$ -/* Revision 1.12 1997/08/27 21:32:24 curt -/* Restructured view calculation code. Added stars. +/* Revision 1.13 1997/09/04 02:17:34 curt +/* Shufflin' stuff. /* + * Revision 1.12 1997/08/27 21:32:24 curt + * Restructured view calculation code. Added stars. + * * Revision 1.11 1997/08/27 03:30:16 curt * Changed naming scheme of basic shared structures. * diff --git a/Main/Makefile b/Main/Makefile index c1d80675e..98451a635 100644 --- a/Main/Makefile +++ b/Main/Makefile @@ -32,7 +32,7 @@ AFILES = ../Aircraft/libAircraft.a ../Cockpit/libCockpit.a \ ../Controls/libControls.a ../Flight/libFlight.a \ ../Joystick/libJoystick.a ../Flight/LaRCsim/libLaRCsim.a \ ../Flight/Slew/libSlew.a ../Scenery/libScenery.a \ - ../Time/libTime.a ../Weather/libWeather.a ../Math/libMath.a + ../Time/libTime.a ../Weather/libWeather.a ../Math/libMath.a include ../make.inc @@ -73,6 +73,9 @@ GLTKkey.o: #--------------------------------------------------------------------------- # $Log$ +# Revision 1.33 1997/09/04 02:17:35 curt +# Shufflin' stuff. +# # Revision 1.32 1997/08/27 21:31:27 curt # Added views.[ch] # diff --git a/Main/depend b/Main/depend index 70d441644..a468e5feb 100644 --- a/Main/depend +++ b/Main/depend @@ -1,33 +1,34 @@ -GLUTkey.o: GLUTkey.c GLUTkey.h ../constants.h ../Aircraft/aircraft.h \ - ../Aircraft/../Flight/flight.h ../Aircraft/../Flight/Slew/slew.h \ - ../Aircraft/../Flight/LaRCsim/ls_interface.h \ - ../Aircraft/../Flight/LaRCsim/../flight.h \ - ../Aircraft/../Controls/controls.h \ - ../Aircraft/../Controls/../limits.h ../Weather/weather.h -GLUTmain.o: GLUTmain.c fg_init.h ../constants.h ../general.h \ +GLUTkey.o: GLUTkey.c GLUTkey.h views.h ../types.h ../Flight/flight.h \ + ../Flight/Slew/slew.h ../Flight/LaRCsim/ls_interface.h \ + ../Flight/LaRCsim/../flight.h ../Math/mat3.h ../constants.h \ ../Aircraft/aircraft.h ../Aircraft/../Flight/flight.h \ - ../Aircraft/../Flight/Slew/slew.h \ - ../Aircraft/../Flight/LaRCsim/ls_interface.h \ - ../Aircraft/../Flight/LaRCsim/../flight.h \ ../Aircraft/../Controls/controls.h \ + ../Aircraft/../Controls/../limits.h ../Weather/weather.h +GLUTmain.o: GLUTmain.c GLUTkey.h fg_init.h views.h ../types.h \ + ../Flight/flight.h ../Flight/Slew/slew.h \ + ../Flight/LaRCsim/ls_interface.h ../Flight/LaRCsim/../flight.h \ + ../Math/mat3.h ../constants.h ../general.h ../Aircraft/aircraft.h \ + ../Aircraft/../Flight/flight.h ../Aircraft/../Controls/controls.h \ ../Aircraft/../Controls/../limits.h ../Cockpit/cockpit.h \ ../Cockpit/hud.h ../Cockpit/../Aircraft/aircraft.h \ ../Cockpit/../Flight/flight.h ../Cockpit/../Controls/controls.h \ - ../Joystick/joystick.h ../Math/fg_geodesy.h ../Math/mat3.h \ - ../Math/polar.h ../Math/../types.h ../Scenery/mesh.h \ - ../Scenery/scenery.h ../Scenery/../types.h ../Time/fg_time.h \ - ../Time/../types.h ../Time/fg_timer.h ../Time/sunpos.h \ - ../Weather/weather.h -fg_init.o: fg_init.c fg_init.h ../constants.h ../general.h \ - ../Aircraft/aircraft.h ../Aircraft/../Flight/flight.h \ - ../Aircraft/../Flight/Slew/slew.h \ - ../Aircraft/../Flight/LaRCsim/ls_interface.h \ - ../Aircraft/../Flight/LaRCsim/../flight.h \ + ../Joystick/joystick.h ../Math/fg_geodesy.h ../Math/polar.h \ + ../Math/../types.h ../Scenery/mesh.h ../Scenery/scenery.h \ + ../Scenery/../types.h ../Time/fg_time.h ../Time/../types.h \ + ../Time/fg_timer.h ../Time/sunpos.h ../Weather/weather.h +fg_init.o: fg_init.c fg_init.h views.h ../types.h ../Flight/flight.h \ + ../Flight/Slew/slew.h ../Flight/LaRCsim/ls_interface.h \ + ../Flight/LaRCsim/../flight.h ../Math/mat3.h ../constants.h \ + ../general.h ../Aircraft/aircraft.h ../Aircraft/../Flight/flight.h \ ../Aircraft/../Controls/controls.h \ ../Aircraft/../Controls/../limits.h ../Cockpit/cockpit.h \ ../Cockpit/hud.h ../Cockpit/../Aircraft/aircraft.h \ ../Cockpit/../Flight/flight.h ../Cockpit/../Controls/controls.h \ ../Joystick/joystick.h ../Math/fg_random.h ../Scenery/mesh.h \ ../Scenery/scenery.h ../Scenery/../types.h ../Scenery/stars.h \ - ../Time/sunpos.h ../Weather/weather.h -views.o: views.c views.h ../types.h + ../Time/sunpos.h ../Time/../types.h ../Weather/weather.h +views.o: views.c views.h ../types.h ../Flight/flight.h \ + ../Flight/Slew/slew.h ../Flight/LaRCsim/ls_interface.h \ + ../Flight/LaRCsim/../flight.h ../Math/mat3.h ../constants.h \ + ../Math/polar.h ../Math/../types.h ../Scenery/scenery.h \ + ../Scenery/../types.h diff --git a/Main/fg_init.c b/Main/fg_init.c index 0d17c5d4e..36f368c2c 100644 --- a/Main/fg_init.c +++ b/Main/fg_init.c @@ -96,7 +96,8 @@ void fgInitSubsystems( void ) { 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; - + /* FG_Altitude = 20000; */ + /* 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; */ @@ -142,7 +143,7 @@ void fgInitSubsystems( void ) { /* fgSlewInit(-398673.28,120625.64, 53, 4.38); */ /* Initialize shared sun position and sun_vec */ - fgUpdateSunPos(); + fgUpdateSunPos(scenery.center); /* Initialize view parameters */ fgViewInit(v); @@ -151,7 +152,11 @@ void fgInitSubsystems( void ) { fgWeatherInit(); /* Initialize the Cockpit subsystem */ - fgCockpitInit( current_aircraft ); + if( fgCockpitInit( current_aircraft ) == NULL ) + { + printf( "Error in Cockpit initialization!\n" ); + exit( 1 ); + } /* Initialize the Stars subsystem */ fgStarsInit(); @@ -195,9 +200,12 @@ void fgInitSubsystems( void ) { /* $Log$ -/* Revision 1.4 1997/08/27 21:32:26 curt -/* Restructured view calculation code. Added stars. +/* Revision 1.5 1997/09/04 02:17:36 curt +/* Shufflin' stuff. /* + * Revision 1.4 1997/08/27 21:32:26 curt + * Restructured view calculation code. Added stars. + * * Revision 1.3 1997/08/27 03:30:19 curt * Changed naming scheme of basic shared structures. * diff --git a/Scenery/depend b/Scenery/depend index c11d4fc75..2fcd2dea7 100644 --- a/Scenery/depend +++ b/Scenery/depend @@ -7,5 +7,13 @@ mesh.o: mesh.c ../constants.h ../types.h ../Math/fg_geodesy.h \ parser.o: parser.c parsevrml.h geometry.h common.h mesh.h scenery.h \ ../types.h scanner.o: scanner.c parser.h -scenery.o: scenery.c ../general.h scenery.h ../types.h parsevrml.h -stars.o: stars.c stars.h ../general.h +scenery.o: scenery.c ../general.h scenery.h ../types.h parsevrml.h \ + stars.h +stars.o: stars.c stars.h ../constants.h ../general.h ../GLUT/views.h \ + ../GLUT/../types.h ../GLUT/../Flight/flight.h \ + ../GLUT/../Flight/Slew/slew.h \ + ../GLUT/../Flight/LaRCsim/ls_interface.h \ + ../GLUT/../Flight/LaRCsim/../flight.h ../GLUT/../Math/mat3.h \ + ../Aircraft/aircraft.h ../Aircraft/../Flight/flight.h \ + ../Aircraft/../Controls/controls.h \ + ../Aircraft/../Controls/../limits.h diff --git a/Scenery/scenery.h b/Scenery/scenery.h index e6f760289..635826f29 100644 --- a/Scenery/scenery.h +++ b/Scenery/scenery.h @@ -38,6 +38,9 @@ struct SCENERY { /* center of current scenery chunk */ struct fgCartesianPoint center; + + /* angle of sun relative to current local horizontal */ + double sun_angle; }; extern struct SCENERY scenery; @@ -60,9 +63,12 @@ void fgSceneryRender(); /* $Log$ -/* Revision 1.9 1997/08/27 03:30:33 curt -/* Changed naming scheme of basic shared structures. +/* Revision 1.10 1997/09/04 02:17:37 curt +/* Shufflin' stuff. /* + * Revision 1.9 1997/08/27 03:30:33 curt + * Changed naming scheme of basic shared structures. + * * Revision 1.8 1997/08/06 00:24:30 curt * Working on correct real time sun lighting. * diff --git a/Scenery/stars.c b/Scenery/stars.c index af868804e..9d665d4b0 100644 --- a/Scenery/stars.c +++ b/Scenery/stars.c @@ -133,12 +133,6 @@ void fgStarsRender() { glDisable( GL_LIGHTING ); glPushMatrix(); - /* set lighting parameters for stars */ - /* amb[0] = amb[1] = amb[2] = 1.0; - diff[0] = diff[1] = diff[2] = 1.0; - glLightfv(GL_LIGHT0, GL_AMBIENT, amb ); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diff ); */ - glTranslatef( v->view_pos.x, v->view_pos.y, v->view_pos.z ); angle = FG_2PI * fmod(DaysSinceEpoch(time(NULL)), 1.0); @@ -154,9 +148,12 @@ void fgStarsRender() { /* $Log$ -/* Revision 1.3 1997/08/29 17:55:28 curt -/* Worked on properly aligning the stars. +/* Revision 1.4 1997/09/04 02:17:38 curt +/* Shufflin' stuff. /* + * Revision 1.3 1997/08/29 17:55:28 curt + * Worked on properly aligning the stars. + * * Revision 1.2 1997/08/27 21:32:30 curt * Restructured view calculation code. Added stars. * diff --git a/Simulator/Makefile b/Simulator/Makefile index 1919e021c..96e80aa28 100644 --- a/Simulator/Makefile +++ b/Simulator/Makefile @@ -58,19 +58,43 @@ clean: done -tar: clean +source-tar: clean (cd ../..; \ - tar cvf source-$(VERSION).tar FlightGear/COPYING FlightGear/Docs \ - FlightGear/Src FlightGear/Thanks) + tar cvzf source-$(VERSION).tar.gz FlightGear/fgtop FlightGear/COPYING \ + FlightGear/Docs FlightGear/Src FlightGear/Thanks) -zip: clean +source-zip: clean (cd ../..; \ - zip -r source-$(VERSION).zip FlightGear/COPYING FlightGear/Docs \ - FlightGear/Src FlightGear/Thanks) + zip -r source-$(VERSION).zip FlightGear/fgtop FlightGear/COPYING \ + FlightGear/Docs FlightGear/Src FlightGear/Thanks) + +scenery-tar: + (cd ../..; \ + tar cvzf scenery-$(VERSION).tar.gz FlightGear/Scenery) + +scenery-zip: + (cd ../..; \ + zip -r scenery-$(VERSION).zip FlightGear/Scenery) + +bin-tar: all + cp GLUT/fg0 GLUT/runfg .. + (cd ../..; \ + tar cvzf bin-$(VERSION).tar.gz FlightGear/fgtop FlightGear/fg0 \ + FlightGear/runfg FlightGear/COPYING FlightGear/Docs FlightGear/Thanks) + +bin-zip: all + cp GLUT/fg0.exe GLUT/runfg.bat GLUT/cygwin.dll .. + (cd ../..; \ + zip -r bin-$(VERSION).zip FlightGear/fgtop FlightGear/fg0.exe \ + FlightGear/runfg.bat FlightGear/cygwin.dll FlightGear/COPYING \ + FlightGear/Docs FlightGear/Thanks) #--------------------------------------------------------------------------- # $Log$ +# Revision 1.26 1997/09/04 02:17:18 curt +# Shufflin' stuff. +# # Revision 1.25 1997/08/25 20:27:21 curt # Merged in initial HUD and Joystick code. # diff --git a/Simulator/make.inc b/Simulator/make.inc index d72c2ea5a..705be7e83 100644 --- a/Simulator/make.inc +++ b/Simulator/make.inc @@ -25,7 +25,7 @@ #--------------------------------------------------------------------------- -VERSION = 0.10 +VERSION = 0.11 #--------------------------------------------------------------------------- # Choose your weapons @@ -120,6 +120,9 @@ FG_CFLAGS = $(GLOBAL_CFLAGS) #--------------------------------------------------------------------------- # $Log$ +# Revision 1.13 1997/09/04 02:17:19 curt +# Shufflin' stuff. +# # Revision 1.12 1997/08/25 20:27:21 curt # Merged in initial HUD and Joystick code. # diff --git a/Time/depend b/Time/depend index e73736bdc..66b8d5dd7 100644 --- a/Time/depend +++ b/Time/depend @@ -1,4 +1,9 @@ fg_time.o: fg_time.c fg_time.h ../types.h fg_timer.o: fg_timer.c fg_timer.h -sunpos.o: sunpos.c sunpos.h fg_time.h ../types.h ../constants.h \ - ../Math/fg_geodesy.h ../Math/polar.h ../Math/../types.h +sunpos.o: sunpos.c sunpos.h ../types.h fg_time.h ../constants.h \ + ../GLUT/views.h ../GLUT/../types.h ../GLUT/../Flight/flight.h \ + ../GLUT/../Flight/Slew/slew.h \ + ../GLUT/../Flight/LaRCsim/ls_interface.h \ + ../GLUT/../Flight/LaRCsim/../flight.h ../GLUT/../Math/mat3.h \ + ../Math/fg_geodesy.h ../Math/mat3.h ../Math/polar.h \ + ../Math/../types.h diff --git a/Time/fg_time.h b/Time/fg_time.h index 9518d913a..6f028b2eb 100644 --- a/Time/fg_time.h +++ b/Time/fg_time.h @@ -28,6 +28,12 @@ #define FG_TIME_H +#ifdef WIN32 +# include +#endif + +#include + #include "../types.h" @@ -35,8 +41,11 @@ struct fgTIME { /* the point on the earth's surface above which the sun is directly * overhead */ - struct fgCartesianPoint fg_sunpos; /* in cartesian coordiantes */ double sun_lon, sun_gc_lat; /* in geocentric coordinates */ + struct fgCartesianPoint fg_sunpos; /* in cartesian coordiantes */ + GLfloat sun_vec[4]; /* in view coordinates */ + double sun_angle; /* the angle between the sun and the + local horizontal */ }; extern struct fgTIME cur_time_params; @@ -46,9 +55,12 @@ extern struct fgTIME cur_time_params; /* $Log$ -/* Revision 1.2 1997/08/27 03:30:36 curt -/* Changed naming scheme of basic shared structures. +/* Revision 1.3 1997/09/04 02:17:39 curt +/* Shufflin' stuff. /* + * Revision 1.2 1997/08/27 03:30:36 curt + * Changed naming scheme of basic shared structures. + * * Revision 1.1 1997/08/13 21:56:00 curt * Initial revision. * diff --git a/Time/sunpos.c b/Time/sunpos.c index 074265d87..186e6cfa9 100644 --- a/Time/sunpos.c +++ b/Time/sunpos.c @@ -46,7 +46,9 @@ #include "sunpos.h" #include "fg_time.h" #include "../constants.h" +#include "../GLUT/views.h" #include "../Math/fg_geodesy.h" +#include "../Math/mat3.h" #include "../Math/polar.h" #undef E @@ -258,12 +260,15 @@ void fgSunPosition(time_t ssue, double *lon, double *lat) { /* update the cur_time_params structure with the current sun position */ -void fgUpdateSunPos() { +void fgUpdateSunPos(struct fgCartesianPoint scenery_center) { struct fgTIME *t; - double sun_gd_lat, sl_radius; + struct VIEW *v; + MAT3vec nup, nsun; + double sun_gd_lat, sl_radius, temp; static int time_warp = 0; t = &cur_time_params; + v = ¤t_view; time_warp += 200; /* increase this to make the world spin real fast */ @@ -275,13 +280,35 @@ void fgUpdateSunPos() { /* printf("Geodetic lat = %.5f Geocentric lat = %.5f\n", sun_gd_lat, t->sun_gc_lat); */ + + /* the sun position has to be translated just like everything else */ + t->sun_vec[0] = t->fg_sunpos.x - scenery_center.x; + t->sun_vec[1] = t->fg_sunpos.y - scenery_center.y; + t->sun_vec[2] = t->fg_sunpos.z - scenery_center.z; + /* make this a directional light source only */ + t->sun_vec[3] = 0.0; + + /* calculate thesun's relative angle to local up */ + MAT3_COPY_VEC(nup, v->local_up); + nsun[0] = t->fg_sunpos.x; + nsun[1] = t->fg_sunpos.y; + nsun[2] = t->fg_sunpos.z; + MAT3_NORMALIZE_VEC(nup, temp); + MAT3_NORMALIZE_VEC(nsun, temp); + + t->sun_angle = acos(MAT3_DOT_PRODUCT(nup, nsun)); + printf("SUN ANGLE relative to current location = %.3f rads.\n", + t->sun_angle); } /* $Log$ -/* Revision 1.6 1997/08/27 03:30:37 curt -/* Changed naming scheme of basic shared structures. +/* Revision 1.7 1997/09/04 02:17:40 curt +/* Shufflin' stuff. /* + * Revision 1.6 1997/08/27 03:30:37 curt + * Changed naming scheme of basic shared structures. + * * Revision 1.5 1997/08/22 21:34:41 curt * Doing a bit of reorganizing and house cleaning. * diff --git a/Time/sunpos.h b/Time/sunpos.h index 767728485..96f582a33 100644 --- a/Time/sunpos.h +++ b/Time/sunpos.h @@ -42,9 +42,10 @@ #include +#include "../types.h" /* update the cur_time_params structure with the current sun position */ -void fgUpdateSunPos(); +void fgUpdateSunPos(struct fgCartesianPoint scenery_center); void fgSunPosition(time_t ssue, double *lon, double *lat); -- 2.39.2