]> git.mxchange.org Git - flightgear.git/commitdiff
Merged in Durk's changes ...
authorcurt <curt>
Tue, 30 Dec 1997 16:36:40 +0000 (16:36 +0000)
committercurt <curt>
Tue, 30 Dec 1997 16:36:40 +0000 (16:36 +0000)
13 files changed:
Cockpit/depend
Cockpit/hud.h
Main/GLUTkey.c
Main/GLUTmain.c
Main/depend
Main/fg_init.c
Scenery/moon.c
Scenery/orbits.h
Scenery/planets.c
Scenery/planets.h
Scenery/stars.c
Scenery/sun.c
Time/depend

index d5e9f450e0fe3204cf619b2e7820b456b47a56a0..1e0cb8cc7878d93aeeec6dfebaf8a3a39f0f799a 100644 (file)
@@ -18,3 +18,13 @@ hud.o: hud.c hud.h ../Aircraft/aircraft.h \
  ../Scenery/scenery.h ../Scenery/../Include/types.h ../Math/mat3.h \
  ../Math/polar.h ../Math/../Include/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/../Include/limits.h ../Flight/flight.h \
+ ../Controls/controls.h ../Include/constants.h ../Scenery/mesh.h \
+ ../Scenery/scenery.h ../Scenery/../Include/types.h ../Math/mat3.h \
+ ../Math/polar.h ../Math/../Include/types.h ../Time/fg_timer.h \
+ ../Math/fg_random.h ../Weather/weather.h
index 28fe685afe67052fcb7311422220cc7035e97bf7..652bb838772e198e407cb41e35edab34cf2d8d93 100644 (file)
  **************************************************************************/
 
 
+#ifndef HUD_H
+#define HUD_H
+
+
 #include "../Aircraft/aircraft.h"
 #include "../Flight/flight.h"
 #include "../Controls/controls.h"
@@ -225,11 +229,17 @@ void fgUpdateHUD();
 void fgUpdateHUD2( struct HUD *hud );
 
 
+#endif /* HUD_H */
+
+
 /* $Log$
-/* Revision 1.2  1997/12/10 22:37:40  curt
-/* Prepended "fg" on the name of all global structures that didn't have it yet.
-/* i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
+/* Revision 1.3  1997/12/30 16:36:41  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.2  1997/12/10 22:37:40  curt
+ * Prepended "fg" on the name of all global structures that didn't have it yet.
+ * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
+ *
  * Revision 1.1  1997/08/29 18:03:22  curt
  * Initial revision.
  *
index 66f139b75b3fbeb6c0ab93bab86e30cd11108502..8e178befba861df5daba4e1d6c70246b4cdabe6b 100644 (file)
@@ -42,6 +42,7 @@
 
 
 extern int show_hud;             /* HUD state */
+extern int displayInstruments;
 
 
 /* Handle keyboard events */
@@ -86,6 +87,9 @@ void GLUTkey(unsigned char k, int x, int y) {
        case 72: /* H key */
            show_hud = !show_hud;
            return;
+       case 87: /* W key */
+           displayInstruments = !displayInstruments;
+           return;
        case 90: /* Z key */
            w->visibility /= 1.10;
            xglFogf(GL_FOG_END, w->visibility);
@@ -225,10 +229,13 @@ void GLUTspecialkey(int k, int x, int y) {
 
 
 /* $Log$
-/* Revision 1.23  1997/12/15 23:54:44  curt
-/* Add xgl wrappers for debugging.
-/* Generate terrain normals on the fly.
+/* Revision 1.24  1997/12/30 16:36:46  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.23  1997/12/15 23:54:44  curt
+ * Add xgl wrappers for debugging.
+ * Generate terrain normals on the fly.
+ *
  * Revision 1.22  1997/12/10 22:37:45  curt
  * Prepended "fg" on the name of all global structures that didn't have it yet.
  * i.e. "struct WEATHER {}" became "struct fgWEATHER {}"
index 770c03044fab0b02a41428a025f142a0181f70ce..42f0dbdf4ac4c3fdf4516427b67e2139537da939 100644 (file)
@@ -62,6 +62,7 @@ struct fgGENERAL general;
 
 /* view parameters */
 static GLfloat win_ratio = 1.0;
+static GLint winWidth, winHeight;
 
 /* temporary hack */
 /* pointer to scenery structure */
@@ -75,6 +76,9 @@ int use_signals = 0;
 /* Yet another hack. This one used by the HUD code. Michele */
 int show_hud;
 
+/* Yet another other hack. Used for my prototype instrument code. (Durk) */
+int displayInstruments; 
+
 
 /**************************************************************************
  * fgInitVisuals() -- Initialize various GL/view parameters
@@ -135,10 +139,22 @@ static void fgUpdateViewParams() {
 
     fgViewUpdate(f, v, l);
 
-    /* Tell GL we are about to modify the projection parameters */
-    xglMatrixMode(GL_PROJECTION);
-    xglLoadIdentity();
-    gluPerspective(55.0, 1.0/win_ratio, 1.0, 100000.0);
+    if (displayInstruments)
+      {
+       xglViewport(0, (GLint)(winHeight / 2 ) , (GLint)winWidth, (GLint)winHeight / 2);
+       /* Tell GL we are about to modify the projection parameters */    
+       xglMatrixMode(GL_PROJECTION);
+       xglLoadIdentity();
+       gluPerspective(55.0, 2.0/win_ratio, 1.0, 100000.0);
+      }
+    else
+      {
+       xglViewport(0, 0 , (GLint)winWidth, (GLint) winHeight);
+       /* Tell GL we are about to modify the projection parameters */    
+       xglMatrixMode(GL_PROJECTION);
+       xglLoadIdentity();
+       gluPerspective(55.0, 1.0/win_ratio, 1.0, 100000.0);
+      }
 
     xglMatrixMode(GL_MODELVIEW);
     xglLoadIdentity();
@@ -215,6 +231,47 @@ static void fgUpdateViewParams() {
 }
 
 
+/*************************************************************************
+ * Draw a basic instrument panel
+ ************************************************************************/
+static void fgUpdateInstrViewParams() {
+    xglViewport(0, 0 , (GLint)winWidth, (GLint)winHeight / 2);
+  
+    xglMatrixMode(GL_PROJECTION);
+    xglPushMatrix();
+  
+    xglLoadIdentity();
+    gluOrtho2D(0, 640, 0, 480);
+    xglMatrixMode(GL_MODELVIEW);
+    xglPushMatrix();
+    xglLoadIdentity();
+    
+    xglColor3f(1.0, 1.0, 1.0);
+    xglIndexi(7);
+  
+    xglDisable(GL_DEPTH_TEST);
+    xglDisable(GL_LIGHTING);
+  
+    xglLineWidth(1);
+    xglColor3f (0.5, 0.5, 0.5);
+
+    xglBegin(GL_QUADS);
+    xglVertex2f(0.0, 0.00);
+    xglVertex2f(0.0, 480.0);
+    xglVertex2f(640.0,480.0);
+    xglVertex2f(640.0, 0.0);
+    xglEnd();
+
+    xglRectf(0.0,0.0, 640, 480);
+    xglEnable(GL_DEPTH_TEST);
+    xglEnable(GL_LIGHTING);
+    xglMatrixMode(GL_PROJECTION);
+    xglPopMatrix();
+    xglMatrixMode(GL_MODELVIEW);
+    xglPopMatrix();
+}
+
+
 /**************************************************************************
  * Update all Visuals (redraws anything graphics related)
  **************************************************************************/
@@ -291,8 +348,14 @@ static void fgRenderFrame( void ) {
     fgSceneryRender();
 
     /* display HUD */
-    /* if( show_hud )
-       fgCockpitUpdate(); */
+    /* if( show_hud ) {
+       fgCockpitUpdate();
+    } */
+
+    /* display instruments */
+    if (displayInstruments) {
+       fgUpdateInstrViewParams();
+    }
 
     #ifdef GLUT
       xglutSwapBuffers();
@@ -533,8 +596,11 @@ static void fgReshape( int width, int height ) {
        win_ratio = (GLfloat) height / (GLfloat) width;
     }
 
-    /* Inform gl of our view window size */
-    xglViewport(0, 0, (GLint)width, (GLint)height);
+    winWidth = width;
+    winHeight = height;
+
+    /* Inform gl of our view window size (now handled elsewhere) */
+    /* xglViewport(0, 0, (GLint)width, (GLint)height); */
 
     fgUpdateViewParams();
     
@@ -623,9 +689,12 @@ int main( int argc, char *argv[] ) {
 
 
 /* $Log$
-/* Revision 1.41  1997/12/30 13:06:56  curt
-/* A couple lighting tweaks ...
+/* Revision 1.42  1997/12/30 16:36:47  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.41  1997/12/30 13:06:56  curt
+ * A couple lighting tweaks ...
+ *
  * Revision 1.40  1997/12/30 01:38:37  curt
  * Switched back to per vertex normals and smooth shading for terrain.
  *
index 3ac3e76c5284726682ad70234d1d3b26f4dcbb66..eb76cabe4ab43330325868815837af7edb846d3c 100644 (file)
@@ -37,6 +37,7 @@ fg_init.o: fg_init.c fg_init.h views.h ../Include/types.h \
  ../Scenery/scenery.h ../Scenery/../Include/types.h ../Scenery/sky.h \
  ../Scenery/stars.h ../Scenery/sun.h ../Time/sunpos.h \
  ../Weather/weather.h
+probdemo.o: probdemo.c ../XGL/xgl.h
 views.o: views.c views.h ../Include/types.h ../Flight/flight.h \
  ../Flight/Slew/slew.h ../Flight/LaRCsim/ls_interface.h \
  ../Flight/LaRCsim/../flight.h ../Math/mat3.h ../Time/fg_time.h \
index 5cac2000be5b7062490616966c927cffc9e413e4..0eeca4948cefa483b86c681c422015a289f77ea2 100644 (file)
@@ -49,6 +49,7 @@
 
 
 extern int show_hud;             /* HUD state */
+extern int displayInstruments;
 
 
 /* General house keeping initializations */
@@ -228,15 +229,21 @@ void fgInitSubsystems( void ) {
     /* To HUD or not to HUD */
     show_hud = 1;
 
+    /* Let's show the instrument panel */
+    displayInstruments = 1;
+
     /* Joystick support */
     fgJoystickInit( 0 );
 }
 
 
 /* $Log$
-/* Revision 1.22  1997/12/19 23:34:05  curt
-/* Lot's of tweaking with sky rendering and lighting.
+/* Revision 1.23  1997/12/30 16:36:50  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.22  1997/12/19 23:34:05  curt
+ * Lot's of tweaking with sky rendering and lighting.
+ *
  * Revision 1.21  1997/12/19 16:45:00  curt
  * Working on scene rendering order and options.
  *
index 22461d606b926e9a2d9fd2c63aa8a6eefb2d7f67..839de32f26932b042e82332f2aa157a5f2d2026b 100644 (file)
@@ -28,6 +28,7 @@
 #include "orbits.h"
 #include "moon.h"
 
+#include "../Aircraft/aircraft.h"
 #include "../Include/general.h"
 #include "../Main/views.h"
 #include "../Time/fg_time.h"
@@ -148,80 +149,110 @@ struct CelestialCoord fgCalculateMoon(struct OrbElements params,
                                       struct OrbElements sunParams,
                                       struct fgTIME t)
 {
-    struct CelestialCoord
-       result;
-    
-    double
-       eccAnom, ecl, lonecl, latecl, actTime,
-        xv, yv, v, r, xh, yh, zh, xg, yg, zg, xe, ye, ze,
-        Ls, Lm, D, F;
-
-    /* calculate the angle between ecliptic and equatorial coordinate system */
-    actTime = fgCalcActTime(t);
-    ecl = fgDegToRad(23.4393 - 3.563E-7 * actTime);  // in radians of course
-
-    /* calculate the eccentric anomaly */
-    eccAnom = fgCalcEccAnom(params.M, params.e);
-
-    /* calculate the moon's distance (d) and  true anomaly (v) */
-        xv = params.a * ( cos(eccAnom) - params.e);
-    yv = params.a * ( sqrt(1.0 - params.e*params.e) * sin(eccAnom));
-    v =atan2(yv, xv);
-    r = sqrt(xv*xv + yv*yv);
-
-    /* estimate the geocentric rectangular coordinates here */
-    xh = r * (cos(params.N) * cos(v + params.w) - sin(params.N) * sin(v + params.w) * cos(params.i));
-    yh = r * (sin(params.N) * cos(v + params.w) + cos(params.N) * sin(v + params.w) * cos(params.i));
-    zh = r * (sin(v + params.w) * sin(params.i));
-
-    /* calculate the ecliptic latitude and longitude here */
-    lonecl = atan2( yh, xh);
-    latecl = atan2( zh, sqrt( xh*xh + yh*yh));
-
-    /* calculate a number of perturbations */
-    Ls = sunParams.M + sunParams.w;
-    Lm =    params.M +    params.w + params.N;
-    D = Lm - Ls;
-    F = Lm - params.N;
-
-    lonecl += fgDegToRad(
-                           - 1.274 * sin (params.M - 2*D)                      // the Evection
-                + 0.658 * sin (2 * D)                                                  // the Variation
-                - 0.186 * sin (sunParams.M)                                    // the yearly variation
-                - 0.059 * sin (2*params.M - 2*D)
-                - 0.057 * sin (params.M - 2*D + sunParams.M)
-                + 0.053 * sin (params.M + 2*D)
-                + 0.046 * sin (2*D - sunParams.M)
-                + 0.041 * sin (params.M - sunParams.M)
-                - 0.035 * sin (D)                             // the Parallactic Equation
-                - 0.031 * sin (params.M + sunParams.M)
-                - 0.015 * sin (2*F - 2*D)
-                + 0.011 * sin (params.M - 4*D)
-              ); /* Pheeuuwwww */
-    latecl += fgDegToRad(
-                - 0.173 * sin (F - 2*D)
-                - 0.055 * sin (params.M - F - 2*D)
-                - 0.046 * sin (params.M + F - 2*D)
-                + 0.033 * sin (F + 2*D)
-                + 0.017 * sin (2 * params.M + F)
-              );  /* Yep */
-
-    r += (
-                    - 0.58 * cos(params.M - 2*D)
-              - 0.46 * cos(2*D)
-          ); /* Ok! */
-
-    xg = r * cos(lonecl) * cos(latecl);
-    yg = r * sin(lonecl) * cos(latecl);
-    zg = r *               sin(latecl);
-
-    xe  = xg;
-    ye = yg * cos(ecl) - zg * sin(ecl);
-    ze = yg * sin(ecl) + zg * cos(ecl);
-
-        result.RightAscension = atan2(ye, xe);
-    result.Declination = atan2(ze, sqrt(xe*xe + ye*ye));
-    return result;
+  struct CelestialCoord
+    geocCoord, topocCoord; 
+  
+  
+  double
+    eccAnom, ecl, lonecl, latecl, actTime,
+    xv, yv, v, r, xh, yh, zh, xg, yg, zg, xe, ye, ze,
+    Ls, Lm, D, F, mpar, gclat, rho, HA, g;
+  
+  struct fgAIRCRAFT *a;
+  struct fgFLIGHT *f;
+
+  a = &current_aircraft;
+  f = &a->flight;
+  
+/* calculate the angle between ecliptic and equatorial coordinate system */
+  actTime = fgCalcActTime(t);
+  ecl = fgDegToRad(23.4393 - 3.563E-7 * actTime);  // in radians of course
+                                                       
+  /* calculate the eccentric anomaly */
+  eccAnom = fgCalcEccAnom(params.M, params.e);
+
+  /* calculate the moon's distance (d) and  true anomaly (v) */
+  xv = params.a * ( cos(eccAnom) - params.e);
+  yv = params.a * ( sqrt(1.0 - params.e*params.e) * sin(eccAnom));
+  v =atan2(yv, xv);
+  r = sqrt(xv*xv + yv*yv);
+  
+  /* estimate the geocentric rectangular coordinates here */
+  xh = r * (cos(params.N) * cos(v + params.w) - sin(params.N) * sin(v + params.w) * cos(params.i));
+  yh = r * (sin(params.N) * cos(v + params.w) + cos(params.N) * sin(v + params.w) * cos(params.i));
+  zh = r * (sin(v + params.w) * sin(params.i));
+  
+  /* calculate the ecliptic latitude and longitude here */
+  lonecl = atan2( yh, xh);
+  latecl = atan2( zh, sqrt( xh*xh + yh*yh));
+
+  /* calculate a number of perturbations */
+  Ls = sunParams.M + sunParams.w;
+  Lm =    params.M +    params.w + params.N;
+  D = Lm - Ls;
+  F = Lm - params.N;
+  
+  lonecl += fgDegToRad(
+                      - 1.274 * sin (params.M - 2*D)                           // the Evection
+                      + 0.658 * sin (2 * D)                                                    // the Variation
+                      - 0.186 * sin (sunParams.M)                                      // the yearly variation
+                      - 0.059 * sin (2*params.M - 2*D)
+                      - 0.057 * sin (params.M - 2*D + sunParams.M)
+                      + 0.053 * sin (params.M + 2*D)
+                      + 0.046 * sin (2*D - sunParams.M)
+                      + 0.041 * sin (params.M - sunParams.M)
+                      - 0.035 * sin (D)                             // the Parallactic Equation
+                      - 0.031 * sin (params.M + sunParams.M)
+                      - 0.015 * sin (2*F - 2*D)
+                      + 0.011 * sin (params.M - 4*D)
+                      ); /* Pheeuuwwww */
+  latecl += fgDegToRad(
+                      - 0.173 * sin (F - 2*D)
+                      - 0.055 * sin (params.M - F - 2*D)
+                      - 0.046 * sin (params.M + F - 2*D)
+                      + 0.033 * sin (F + 2*D)
+                      + 0.017 * sin (2 * params.M + F)
+                      );  /* Yep */
+
+  r += (
+       - 0.58 * cos(params.M - 2*D)
+       - 0.46 * cos(2*D)
+       ); /* Ok! */
+
+  xg = r * cos(lonecl) * cos(latecl);
+  yg = r * sin(lonecl) * cos(latecl);
+  zg = r *               sin(latecl);
+
+  xe  = xg;
+  ye = yg * cos(ecl) - zg * sin(ecl);
+  ze = yg * sin(ecl) + zg * cos(ecl);
+  
+
+  
+
+  geocCoord.RightAscension = atan2(ye, xe);
+  geocCoord.Declination = atan2(ze, sqrt(xe*xe + ye*ye));
+  
+  /* New since 25 december 1997 */
+  /* Calculate the moon's topocentric position instead of it's geocentric! */
+
+  mpar = asin( 1 / r); /* calculate the moon's parrallax, i.e. the apparent size of the
+                         (equatorial) radius of the Earth, as seen from the moon */
+  gclat = FG_Latitude - 0.083358 * sin (2 * fgDegToRad( FG_Latitude));
+  rho = 0.99883 + 0.00167 * cos(2 * fgDegToRad(FG_Latitude));
+
+  if (geocCoord.RightAscension < 0)
+    geocCoord.RightAscension += (2*M_PI);
+
+  HA = t.lst - (3.8197186 * geocCoord.RightAscension);
+
+  g = atan (tan(gclat) / cos( (HA / 3.8197186))); 
+
+     
+
+  topocCoord.RightAscension = geocCoord.RightAscension - mpar * rho * cos(gclat) * sin(HA) / cos(geocCoord.Declination);
+  topocCoord.Declination = geocCoord.Declination - mpar * rho * sin(gclat) * sin(g - geocCoord.Declination) / sin(g);
+  return topocCoord;
 }
 
 
index 2ce03b122bf6d07e69937c5630e61d414ce059fe..c51b305e46c23bbea5bade2feb14e46407976079 100644 (file)
@@ -40,6 +40,7 @@
 struct SunPos {
     double xs;
     double ys;
+    double dist;
 };
 
 struct OrbElements {
@@ -63,6 +64,7 @@ struct CelestialCoord {
     double RightAscension;
     double Declination;
     double distance;
+    double magnitude;
 };
 
 
@@ -79,7 +81,10 @@ void fgSolarSystemUpdate(struct OrbElements *planets, struct fgTIME t);
 
 
 /* $Log$
-/* Revision 1.1  1997/10/25 03:16:10  curt
-/* Initial revision of code contributed by Durk Talsma.
+/* Revision 1.2  1997/12/30 16:36:52  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.1  1997/10/25 03:16:10  curt
+ * Initial revision of code contributed by Durk Talsma.
+ *
  */
index b4e2bb1641028167bf23a2e3e0f23294b6f1d3ac..4aeaf0c929c930ddfc9259a98c9f97723066e1fb 100644 (file)
@@ -31,7 +31,7 @@
 
 struct CelestialCoord fgCalculatePlanet(struct OrbElements planet,
                                         struct OrbElements theSun,
-                                        struct fgTIME t)
+                                        struct fgTIME t, int idx)
 {
    struct CelestialCoord
                result;
@@ -40,7 +40,7 @@ struct CelestialCoord fgCalculatePlanet(struct OrbElements planet,
        SolarPosition;
 
        double
-        eccAnom, r, v, ecl, actTime,
+        eccAnom, r, v, ecl, actTime, R, s, ir, Nr, B, FV, ring_magn,
         xv, yv, xh, yh, zh, xg, yg, zg, xe, ye, ze;
 
       actTime = fgCalcActTime(t);
@@ -77,18 +77,69 @@ struct CelestialCoord fgCalculatePlanet(struct OrbElements planet,
 
     xe = xg;
     ye = yg * cos(ecl) - zg * sin(ecl);
-        ze = yg * sin(ecl) + zg * cos(ecl);
+    ze = yg * sin(ecl) + zg * cos(ecl);
+
     result.RightAscension = atan2(ye,xe);
     result.Declination = atan2(ze, sqrt(xe*xe + ye*ye));
+
+        
+    /* Let's calculate the brightness of the planet */
+    R = sqrt ( xg*xg + yg*yg + zg*zg);
+    s = SolarPosition.dist;
+    FV = acos(  (r*r + R*R - s*s) / (2*r*R));
+    FV  *= 57.29578;  /* convert radians to degrees */ 
+    switch(idx)
+      {
+      case 2: /* mercury */
+       result.magnitude = -0.36 + 5*log10( r*R ) + 0.027 * FV + 2.2E-13 * pow(FV, 6);
+       break;
+      case 3: /*venus */
+       result.magnitude = -4.34 + 5*log10( r*R ) + 0.013 * FV + 4.2E-07 * pow(FV,3);
+       break;
+      case 4: /* mars */
+       result.magnitude = -1.51 + 5*log10( r*R ) + 0.016 * FV;
+       break;
+      case 5: /* Jupiter */
+       result.magnitude = -9.25 + 5*log10( r*R ) + 0.014 * FV;
+       break;
+      case 6: /* Saturn */
+       
+       ir = 0.4897394;
+       Nr = 2.9585076 + 6.6672E-7*actTime;
+       
+       B = asin ( sin (result.Declination) * cos(ir) - cos(result.Declination) * sin (ir) * sin (result.RightAscension - Nr));
+       ring_magn = -2.6 * sin (abs(B)) + 1.2 * pow(sin(B),2);
+       result.magnitude = -9.0 + 5*log10( r*R ) + 0.044 * FV + ring_magn;
+       break;
+      case 7: /* Uranus */
+       result.magnitude = -7.15 + 5*log10( r*R) + 0.001 * FV;
+       break;
+      case 8:  /* Neptune */
+       result.magnitude = -6.90 + 5*log10 (r*R) + 0.001 *FV;
+       break;
+      default:
+       printf("index %d out of range !!!!\n", idx);
+      }
+    printf("Geocentric dist     %f\n"
+           "Heliocentric dist   %f\n"
+          "Distance to the sun %f\n"
+          "Phase angle         %f\n"
+          "Brightness          %f\n", R, r, s, FV, result.magnitude);
     return result;
 }
 
 
+
 /* $Log$
-/* Revision 1.2  1997/12/12 21:41:29  curt
-/* More light/material property tweaking ... still a ways off.
+/* Revision 1.3  1997/12/30 16:36:52  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.2  1997/12/12 21:41:29  curt
+ * More light/material property tweaking ... still a ways off.
+ *
  * Revision 1.1  1997/10/25 03:16:10  curt
  * Initial revision of code contributed by Durk Talsma.
  *
  */
+
+
index dfbc35fe727d52c5887a859202861ffd0ad5f77f..3d5df4650d552b95409032363484d66d733741bd 100644 (file)
 
 struct CelestialCoord fgCalculatePlanet(struct OrbElements planet,
                                          struct OrbElements theSun,
-                                         struct fgTIME t);
+                                         struct fgTIME t, int idx);
 
 #endif /* PLANETS_H */
 
 
 /* $Log$
-/* Revision 1.2  1997/12/12 21:41:30  curt
-/* More light/material property tweaking ... still a ways off.
+/* Revision 1.3  1997/12/30 16:36:53  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.2  1997/12/12 21:41:30  curt
+ * More light/material property tweaking ... still a ways off.
+ *
  * Revision 1.1  1997/10/25 03:16:11  curt
  * Initial revision of code contributed by Durk Talsma.
  *
index e74fcbcb65294740951c325f6b7337beae2ea9d4..31efca60abd2458353a8a0930ccde44d0af2109d 100644 (file)
@@ -167,11 +167,24 @@ void fgStarsInit() {
        /* Add the planets to all four display lists */
        for ( j = 2; j < 9; j++ ) {
            pltPos = fgCalculatePlanet(pltOrbElements[j], 
-                                      pltOrbElements[0], cur_time_params);
+                                      pltOrbElements[0], cur_time_params, j);
            printf("Planet found at %f (ra), %f (dec)\n", 
                   pltPos.RightAscension, pltPos.Declination);
            /* give the planets a temporary color, for testing purposes */
-           xglColor3f( 1.0, 0.0, 0.0);
+           /* xglColor3f( 1.0, 0.0, 0.0); */
+
+           /* scale magnitudes to (0.0 - 1.0) */
+           magnitude = (0.0 - pltPos.magnitude) / 5.0 + 1.0;
+           
+           /* scale magnitudes again so they look ok */
+           if ( magnitude > 1.0 ) { magnitude = 1.0; }
+           if ( magnitude < 0.0 ) { magnitude = 0.0; }
+           magnitude = 
+             magnitude * 0.7 + (((FG_STAR_LEVELS - 1) - i) * 0.1);        
+           
+
+           xglColor3f(magnitude, magnitude, magnitude);
+
            xglVertex3f( 50000.0 * cos(pltPos.RightAscension) * 
                         cos(pltPos.Declination),
                         50000.0 * sin(pltPos.RightAscension) * 
@@ -265,9 +278,12 @@ void fgStarsRender() {
 
 
 /* $Log$
-/* Revision 1.21  1997/12/19 23:35:00  curt
-/* Lot's of tweaking with sky rendering and lighting.
+/* Revision 1.22  1997/12/30 16:36:53  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.21  1997/12/19 23:35:00  curt
+ * Lot's of tweaking with sky rendering and lighting.
+ *
  * Revision 1.20  1997/12/15 23:55:03  curt
  * Add xgl wrappers for debugging.
  * Generate terrain normals on the fly.
index 08768e6af3b4b228a500f2dba0eb32ca46db809f..2630136f2015728f774877273934483af3310e91 100644 (file)
@@ -60,6 +60,7 @@ struct SunPos fgCalcSunPos(struct OrbElements params)
       coordinates (xs, ys) */
     solarPosition.xs = r * cos(lonSun);
     solarPosition.ys = r * sin(lonSun);
+    solarPosition.dist = r;
     return solarPosition;
 }
 
@@ -126,23 +127,27 @@ void fgSunInit() {
 void fgSunRender() {
     struct fgVIEW *v;
     struct fgTIME *t;
-    GLfloat color[4] = { 0.85, 0.65, 0.05, 1.0 };
-    /* double x_2, x_4, x_8, x_10; */
-    /* GLfloat ambient; */
-    /* GLfloat amb[3], diff[3]; */
+    struct fgLIGHT *l;
+    /* GLfloat color[4] = { 0.85, 0.65, 0.05, 1.0 }; */
+    GLfloat color[4] = { 1.00, 1.00, 1.00, 1.00 };
+    double x_2, x_4, x_8, x_10;
+    GLfloat ambient;
+    GLfloat amb[3], diff[3];
 
 
     t = &cur_time_params;
     v = &current_view;
+    l = &cur_light_params;
 
-    /* x_2 = t->sun_angle * t->sun_angle;
+    x_2 = l->sun_angle * l->sun_angle;
     x_4 = x_2 * x_2;
     x_8 = x_4 * x_4;
-    x_10 = x_8 * x_2; */
+    x_10 = x_8 * x_2;
 
-    /* ambient = (0.4 * pow(1.1, -x_10 / 30.0));
+    ambient = (0.4 * pow(1.1, -x_10 / 30.0));
     if ( ambient < 0.3 ) ambient = 0.3;
     if ( ambient > 1.0 ) ambient = 1.0;
+
     amb[0] = 0.50 + ((ambient * 6.66) - 1.6);
     amb[1] = 0.00 + ((ambient * 6.66) - 1.6);
     amb[2] = 0.00 + ((ambient * 6.66) - 1.6);
@@ -155,34 +160,40 @@ void fgSunRender() {
     diff[0] = 0.0;
     diff[1] = 0.0;
     diff[2] = 0.0;
-    diff[3] = 0.0; */
+    diff[3] = 1.0;
 
     /* set lighting parameters */
-    /* xglLightfv(GL_LIGHT0, GL_AMBIENT, color );
+    xglLightfv(GL_LIGHT0, GL_AMBIENT, color );
     xglLightfv(GL_LIGHT0, GL_DIFFUSE, color );
     xglMaterialfv(GL_FRONT, GL_AMBIENT, amb);
-    xglMaterialfv(GL_FRONT, GL_DIFFUSE, diff); */
+    xglMaterialfv(GL_FRONT, GL_DIFFUSE, diff); 
+    xglMaterialfv(GL_FRONT, GL_SHININESS, diff);
+    xglMaterialfv(GL_FRONT, GL_EMISSION, diff);
+    xglMaterialfv(GL_FRONT, GL_SPECULAR, diff);
 
-    xglDisable( GL_LIGHTING );
+    /* xglDisable( GL_LIGHTING ); */
 
     xglPushMatrix();
     xglTranslatef(xSun, ySun, zSun);
     xglScalef(1400, 1400, 1400);
 
-    xglColor4f(0.85, 0.65, 0.05, 1.0);
+    xglColor3f(0.85, 0.65, 0.05);
 
     xglCallList(sun_obj);
 
     xglPopMatrix();
 
-    xglEnable( GL_LIGHTING );
+    /* xglEnable( GL_LIGHTING ); */
 }
 
 
 /* $Log$
-/* Revision 1.8  1997/12/19 23:35:00  curt
-/* Lot's of tweaking with sky rendering and lighting.
+/* Revision 1.9  1997/12/30 16:36:54  curt
+/* Merged in Durk's changes ...
 /*
+ * Revision 1.8  1997/12/19 23:35:00  curt
+ * Lot's of tweaking with sky rendering and lighting.
+ *
  * Revision 1.7  1997/12/17 23:12:16  curt
  * Fixed so moon and sun display lists aren't recreate periodically.
  *
index c51e503d2f29b4fd1d32d7481ebecd874ff53fd0..04cc3f244c54af01fcd7f1b97c04392caf226ce6 100644 (file)
@@ -1,9 +1,11 @@
+event.o: event.c event.h
 fg_time.o: fg_time.c fg_time.h ../Include/types.h ../Flight/flight.h \
  ../Flight/Slew/slew.h ../Flight/LaRCsim/ls_interface.h \
  ../Flight/LaRCsim/../flight.h ../Include/constants.h \
  ../Time/fg_time.h
 fg_timer.o: fg_timer.c fg_timer.h
-sptest.o: sptest.c sunpos.h ../Include/types.h ../Include/constants.h
+scheduler.o: scheduler.c
+sidereal.o: sidereal.c ../Include/constants.h
 sunpos.o: sunpos.c sunpos.h ../Include/types.h fg_time.h \
  ../Flight/flight.h ../Flight/Slew/slew.h \
  ../Flight/LaRCsim/ls_interface.h ../Flight/LaRCsim/../flight.h \