]> git.mxchange.org Git - flightgear.git/blobdiff - src/Time/sunpos.cxx
Patch from Cameron Moore:
[flightgear.git] / src / Time / sunpos.cxx
index 49a1f8aafa304f3d66ef583b699dfa5af0f22115..ebc45f9d5f3dc50219e928712b0c101145d68660 100644 (file)
 #include <simgear/math/polar3d.hxx>
 #include <simgear/math/sg_geodesy.hxx>
 #include <simgear/math/vector.hxx>
+#include <simgear/timing/sg_time.hxx>
 
 #include <Main/globals.hxx>
+#include <Main/viewer.hxx>
 #include <Scenery/scenery.hxx>
 #include <Time/light.hxx>
 
 #include "sunpos.hxx"
 
 // #undef E // should no longer be needed
-#define MeanObliquity (23.440592*(SG_2PI/360))
+#define MeanObliquity (23.440592*(SGD_2PI/360))
 
 static void   ecliptic_to_equatorial(double, double, double *, double *);
 static double julian_date(int, int, int);
@@ -108,7 +110,7 @@ static double julian_date(int y, int m, int d) {
 
     /* lazy test to ensure gregorian calendar */
     if (y < 1583) {
-       FG_LOG( FG_EVENT, FG_ALERT, 
+       SG_LOG( SG_EVENT, SG_ALERT, 
                "WHOOPS! Julian dates only valid for 1582 oct 15 or later" );
     }
 
@@ -191,12 +193,12 @@ void fgSunPosition(time_t ssue, double *lon, double *lat) {
 
     ecliptic_to_equatorial( globals->get_ephem()->get_sun()->getLon(),
                            0.0, &alpha, &delta );
-    tmp = alpha - (SG_2PI/24)*GST(ssue);
+    tmp = alpha - (SGD_2PI/24)*GST(ssue);
     if (tmp < -SGD_PI) {
-       do tmp += SG_2PI;
+       do tmp += SGD_2PI;
        while (tmp < -SGD_PI);
     } else if (tmp > SGD_PI) {
-       do tmp -= SG_2PI;
+       do tmp -= SGD_2PI;
        while (tmp < -SGD_PI);
     }
 
@@ -225,13 +227,13 @@ static void fgSunPositionGST(double gst, double *lon, double *lat) {
                            globals->get_ephem()->get_sun()->getLat(),
                            &alpha, &delta );
 
-//    tmp = alpha - (SG_2PI/24)*GST(ssue);
-    tmp = alpha - (SG_2PI/24)*gst;     
+//    tmp = alpha - (SGD_2PI/24)*GST(ssue);
+    tmp = alpha - (SGD_2PI/24)*gst;    
     if (tmp < -SGD_PI) {
-       do tmp += SG_2PI;
+       do tmp += SGD_2PI;
        while (tmp < -SGD_PI);
     } else if (tmp > SGD_PI) {
-       do tmp -= SG_2PI;
+       do tmp -= SGD_2PI;
        while (tmp < -SGD_PI);
     }
 
@@ -243,7 +245,7 @@ static void fgSunPositionGST(double gst, double *lon, double *lat) {
 // update the cur_time_params structure with the current sun position
 void fgUpdateSunPos( void ) {
     fgLIGHT *l;
-    FGViewerRPH *v;
+    FGViewer *v;
     sgVec3 nup, nsun;
     Point3D p, rel_sunpos;
     double dot, east_dot;
@@ -258,10 +260,10 @@ void fgUpdateSunPos( void ) {
 
     l = &cur_light_params;
     SGTime *t = globals->get_time_params();
-    v = (FGViewerRPH *)globals->get_current_view();
+    v = globals->get_current_view();
 
-    FG_LOG( FG_EVENT, FG_INFO, "  Updating Sun position" );
-    FG_LOG( FG_EVENT, FG_INFO, "  Gst = " << t->getGst() );
+    SG_LOG( SG_EVENT, SG_INFO, "  Updating Sun position" );
+    SG_LOG( SG_EVENT, SG_INFO, "  Gst = " << t->getGst() );
 
     fgSunPositionGST(t->getGst(), &l->sun_lon, &sun_gd_lat);
 
@@ -270,8 +272,8 @@ void fgUpdateSunPos( void ) {
     p = Point3D( l->sun_lon, l->sun_gc_lat, sl_radius );
     l->fg_sunpos = sgPolarToCart3d(p);
 
-    FG_LOG( FG_EVENT, FG_INFO, "    t->cur_time = " << t->get_cur_time() );
-    FG_LOG( FG_EVENT, FG_INFO, 
+    SG_LOG( SG_EVENT, SG_INFO, "    t->cur_time = " << t->get_cur_time() );
+    SG_LOG( SG_EVENT, SG_INFO, 
            "    Sun Geodetic lat = " << sun_gd_lat
            << " Geocentric lat = " << l->sun_gc_lat );
 
@@ -298,14 +300,14 @@ void fgUpdateSunPos( void ) {
     //      << nsun[2] << endl;
 
     l->sun_angle = acos( sgScalarProductVec3 ( nup, nsun ) );
-    FG_LOG( FG_EVENT, FG_INFO, "sun angle relative to current location = "
+    SG_LOG( SG_EVENT, SG_INFO, "sun angle relative to current location = "
            << l->sun_angle );
     
     // calculate vector to sun's position on the earth's surface
     Point3D vp( v->get_view_pos()[0],
                v->get_view_pos()[1],
                v->get_view_pos()[2] );
-    rel_sunpos = l->fg_sunpos - ( vp + scenery.center );
+    rel_sunpos = l->fg_sunpos - ( vp + globals->get_scenery()->get_center() );
     sgSetVec3( to_sun, rel_sunpos.x(), rel_sunpos.y(), rel_sunpos.z() );
     // printf( "Vector to sun = %.2f %.2f %.2f\n",
     //         v->to_sun[0], v->to_sun[1], v->to_sun[2]);
@@ -343,7 +345,7 @@ void fgUpdateSunPos( void ) {
        l->sun_rotation = -acos(dot);
     }
     // cout << "  Sky needs to rotate = " << angle << " rads = "
-    //      << angle * RAD_TO_DEG << " degrees." << endl;
+    //      << angle * SGD_RADIANS_TO_DEGREES << " degrees." << endl;
 }