]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/ridge_lift.cxx
jean pellotier: test for positions near the pole was in fact a test for positions...
[flightgear.git] / src / Environment / ridge_lift.cxx
index 8289953b7025c3623192167d089f77c18208e0c8..84b90fbbc333061b1503c506cbf0c65eb44ec42b 100644 (file)
@@ -142,6 +142,9 @@ void FGRidgeLift::unbind() {
 
 void FGRidgeLift::update(double dt) {
 
+       if( dt <= 0 ) // paused, do nothing but keep current lift
+               return;
+
        if( _enabled_node && false == _enabled_node->getBoolValue() ) {
                if( strength != 0.0 ) {
                        strength = 0.0;
@@ -173,7 +176,7 @@ void FGRidgeLift::update(double dt) {
 
                        probe_lat_rad[i] = asin(sin(user_latitude_rad)*cos(probe_radius_ratio)
                                        +cos(user_latitude_rad)*sin_probe_radius_ratio*cos(ground_wind_from_rad));
-                       if (probe_lat_rad[i] < SG_EPSILON ) {
+                       if (fabs(fabs(probe_lat_rad[i])-SG_PI/2.0) < SG_EPSILON ) {
                                probe_lon_rad[i] = user_latitude_rad; // probe on a pole        
                        } else {
                                probe_lon_rad[i] = fmod((user_longitude_rad+asin(sin(ground_wind_from_rad)
@@ -185,15 +188,8 @@ void FGRidgeLift::update(double dt) {
                }
        
                for (int i = 0; i < sizeof(probe_elev_m)/sizeof(probe_elev_m[0]); i++) {
-                       double elevation = 0;
-                       if (globals->get_scenery()->get_elevation_m(SGGeod::fromGeodM(
-                               SGGeod::fromRad(probe_lon_rad[i],probe_lat_rad[i]), 20000), elevation, 0)) {
-                               if ( elevation > 0.1 ) { 
-                                       probe_elev_m[i] = elevation; 
-                               } else { 
-                                       probe_elev_m[i] = 0.1 ;
-                               }
-                       } else { 
+                       if (!globals->get_scenery()->get_elevation_m(SGGeod::fromGeodM(
+                               SGGeod::fromRad(probe_lon_rad[i],probe_lat_rad[i]), 20000), probe_elev_m[i], 0)) {
                                probe_elev_m[i] = 0.1;
                        }
                }