]> git.mxchange.org Git - simgear.git/commitdiff
Pass current latitude to moon position calculations to compenstate for it's
authorcurt <curt>
Thu, 16 Mar 2000 03:14:23 +0000 (03:14 +0000)
committercurt <curt>
Thu, 16 Mar 2000 03:14:23 +0000 (03:14 +0000)
parallax.

simgear/ephemeris/ephemeris.cxx
simgear/ephemeris/ephemeris.hxx
simgear/ephemeris/moon.cxx
simgear/ephemeris/moon.hxx
simgear/ephemeris/solarsystem.cxx
simgear/ephemeris/star.hxx

index c795a8584100139be4f0b2bcf0cad2504d300423..2f96b9bc2698663f7ad1e5068cd4c862545d9bd9 100644 (file)
@@ -55,10 +55,10 @@ FGEphemeris::~FGEphemeris( void ) {
 
 // Update (recalculate) the positions of all objects for the specified
 // time
-void FGEphemeris::update( FGTime *t ) {
+void FGEphemeris::update( FGTime *t, double lat ) {
     // update object positions
     our_sun->updatePosition( t );
-    moon->updatePosition( t, our_sun );
+    moon->updatePosition( t, lat, our_sun );
     mercury->updatePosition( t, our_sun );
     venus->updatePosition( t, our_sun );
     mars->updatePosition( t, our_sun );
@@ -68,6 +68,7 @@ void FGEphemeris::update( FGTime *t ) {
     neptune->updatePosition( t, our_sun );
 
     // update planets list
+    nplanets = 7;
     mercury->getPos( &planets[0][0], &planets[0][1], &planets[0][2] );
     venus  ->getPos( &planets[1][0], &planets[1][1], &planets[1][2] );
     mars   ->getPos( &planets[2][0], &planets[2][1], &planets[2][2] );
@@ -75,6 +76,5 @@ void FGEphemeris::update( FGTime *t ) {
     saturn ->getPos( &planets[4][0], &planets[4][1], &planets[4][2] );
     uranus ->getPos( &planets[5][0], &planets[5][1], &planets[5][2] );
     neptune->getPos( &planets[6][0], &planets[6][1], &planets[6][2] );
-    
 }
 
index b57fc02c95883f59bed3bd5a22567acefa2d3b07..7b9a7c42c17f9f69379de884706acf47f689ad8d 100644 (file)
@@ -53,12 +53,13 @@ class FGEphemeris {
     Uranus *uranus;
     Neptune *neptune;
 
-    // 9 planets - earth - pluto which we don't draw = 7
+    // 9 planets, minus earth, minus pluto which we don't draw = 7
     // planets[i][0] = Right Ascension
     // planets[i][1] = Declination
     // planets[i][2] = Magnitude
+    int nplanets;
     sgdVec3 planets[7];
-
+    
 public:
 
     // Constructor
@@ -69,9 +70,10 @@ public:
 
     // Update (recalculate) the positions of all objects for the
     // specified time
-    void update(FGTime *t);
+    void update(FGTime *t, double lat);
 
-    // sun position
+    // sun
+    inline Star *get_sun() const { return our_sun; }
     inline double getSunRightAscension() const {
        return our_sun->getRightAscension();
     }
@@ -79,7 +81,8 @@ public:
        return our_sun->getDeclination();
     }
 
-    // moon position
+    // moon
+    inline Moon *get_moon() const { return moon; }
     inline double getMoonRightAscension() const {
        return moon->getRightAscension();
     }
@@ -88,9 +91,8 @@ public:
     }
 
     // planets
-    inline sgdVec3 *getPlanets() const {
-       return planets;
-    }
+    inline int getNumPlanets() const { return nplanets; }
+    inline sgdVec3 *getPlanets() { return planets; }
 };
 
 
index 78fbc88675b2a5bd8ab79b7fda11f69194bd4200..d604249835f26d61f19930af2e4ba2a4a88d51ba 100644 (file)
@@ -206,7 +206,7 @@ void Moon::setHalo()
  * the position of the moon as seen from the current position on the surface
  * of the moon. 
  ****************************************************************************/
-void Moon::updatePosition(FGTime *t, Star *ourSun)
+void Moon::updatePosition(FGTime *t, double lat, Star *ourSun)
 {
   double 
     eccAnom, ecl, actTime,
@@ -298,11 +298,11 @@ void Moon::updatePosition(FGTime *t, Star *ourSun)
   // FG_LOG( FG_GENERAL, FG_INFO, "r = " << r << " mpar = " << mpar );
   // FG_LOG( FG_GENERAL, FG_INFO, "lat = " << f->get_Latitude() );
 
-  gclat = f->get_Latitude() - 0.003358 * 
-      sin (2 * DEG_TO_RAD * f->get_Latitude() );
+  gclat = lat - 0.003358 * 
+      sin (2 * DEG_TO_RAD * lat );
   // FG_LOG( FG_GENERAL, FG_INFO, "gclat = " << gclat );
 
-  rho = 0.99883 + 0.00167 * cos(2 * DEG_TO_RAD * f->get_Latitude());
+  rho = 0.99883 + 0.00167 * cos(2 * DEG_TO_RAD * lat);
   // FG_LOG( FG_GENERAL, FG_INFO, "rho = " << rho );
   
   if (geoRa < 0)
index bb8b083f2ec1a198ce819722f68cda902de455d4..91210753492df9c437d9ee003b0dd9361d4baf25 100644 (file)
@@ -55,7 +55,7 @@ public:
     Moon( FGTime *t);
     Moon();
     ~Moon();
-    void updatePosition(FGTime *t, Star *ourSun);
+    void updatePosition(FGTime *t, double lat, Star *ourSun);
     // void newImage();
 };
 
index 35692e4c8feb74024c0d3fe949f9a7517a053032..001f795872ad8a8960695f238b082df697b37eb2 100644 (file)
@@ -140,7 +140,7 @@ void SolarSystem::rebuild()
     // solar eclipse. This is yet untested though...
     // Euhh, actually the ecplise doesn't work...
 
-    earthsMoon->newImage();
+    // earthsMoon->newImage();
     // Step 2b:  Add the sun
     // ourSun->newImage();
     // Step 2c: Add the planets
index 38786541162ab6eef46406d70e3b06f0b33ed629..7b3b02a51052b7b94ce83a04d3d081558698fa31 100644 (file)
@@ -45,7 +45,6 @@ public:
     void updatePosition(FGTime *t);
     double getM();
     double getw();
-    //double getLon();
     double getxs();
     double getys();
     double getDistance();