]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIThermal.cxx
apt.dat parser: clearer log and exception messages
[flightgear.git] / src / AIModel / AIThermal.cxx
index f47ba23569142a6c379daf0a47e55a8bad008e26..4e8e63b2e43d9c326d22358d08ce8eae9da4873c 100644 (file)
@@ -28,7 +28,7 @@
 #include <Main/globals.hxx>
 #include <Scenery/scenery.hxx>
 #include <string>
-#include <math.h>
+#include <cmath>
 
 using std::string;
 
@@ -77,38 +77,25 @@ bool FGAIThermal::init(bool search_in_AI_path) {
 }
 
 void FGAIThermal::bind() {
-       props->tie("position/altitude-agl-ft", // for debug and tweak
+    FGAIBase::bind();
+    tie("position/altitude-agl-ft", // for debug and tweak
                 SGRawValuePointer<double>(&altitude_agl_ft));
-       props->tie("alt-rel", // for debug and tweak
+    tie("alt-rel", // for debug and tweak
                 SGRawValuePointer<double>(&alt_rel));
-       props->tie("time", // for debug and tweak
+    tie("time", // for debug and tweak
                 SGRawValuePointer<double>(&time));
-       props->tie("xx", // for debug and tweak
+    tie("xx", // for debug and tweak
                 SGRawValuePointer<double>(&xx));
-       props->tie("is-forming", // for debug abd tweak
+    tie("is-forming", // for debug abd tweak
                 SGRawValuePointer<bool>(&is_forming));
-       props->tie("is-formed", // for debug abd tweak
+    tie("is-formed", // for debug abd tweak
                 SGRawValuePointer<bool>(&is_formed));
-       props->tie("is-dying", // for debug abd tweak
+    tie("is-dying", // for debug abd tweak
                 SGRawValuePointer<bool>(&is_dying));
-       props->tie("is-dead", // for debug abd tweak
+    tie("is-dead", // for debug abd tweak
                 SGRawValuePointer<bool>(&is_dead));
-    FGAIBase::bind();
-}
-
-void FGAIThermal::unbind() {
-       props->untie("position/altitude-agl-ft");
-       props->untie("alt-rel");
-       props->untie("time");   
-       props->untie("is-forming");
-       props->untie("is-formed");
-       props->untie("is-dying");
-       props->untie("is-dead");
-       props->untie("xx");
-    FGAIBase::unbind();
 }
 
-
 void FGAIThermal::update(double dt) {
    FGAIBase::update(dt);
    Run(dt);
@@ -214,14 +201,6 @@ double slice_center_lat;
 
 
 
-// **************************************
-// various variables relative to the user
-// **************************************
-
-double user_latitude  = manager->get_user_latitude();
-double user_longitude = manager->get_user_longitude();
-double user_altitude  = manager->get_user_altitude(); // MSL
-
 //we need to know the thermal foot AGL altitude
 
 
@@ -240,6 +219,9 @@ if (dt_count >= 10.0 ) {
 }
 
 //user altitude relative to the thermal height, seen AGL from the thermal foot
+    
+
+double user_altitude = globals->get_aircraft_position().getElevationFt();
 if ( user_altitude < 1.0 ) { user_altitude = 1.0 ;}; // an ugly way to avoid NaNs for users at alt 0
 double user_altitude_agl= ( user_altitude - ground_elev_ft ) ;
 alt_rel = user_altitude_agl / altitude_agl_ft;
@@ -356,14 +338,9 @@ double dt_slice_lat = dt_slice_lat_FT / ft_per_deg_lat;
 slice_center_lon = thermal_foot_lon + dt_slice_lon;
 slice_center_lat = thermal_foot_lat + dt_slice_lat;
 
-double dist_center_lon = fabs(slice_center_lon - user_longitude)* ft_per_deg_lon;
-double dist_center_lat = fabs(slice_center_lat - user_latitude)* ft_per_deg_lat;
-
-double dist_center_FT = sqrt ( dist_center_lon*dist_center_lon + dist_center_lat*dist_center_lat ); // feet
-
-dist_center = dist_center_FT/ 6076.11549; //nautic miles
-
-
+dist_center = SGGeodesy::distanceNm(SGGeod::fromDeg(slice_center_lon, slice_center_lat),
+                                    globals->get_aircraft_position());
+    
 // Now we can calculate Vup
 
 if ( max_strength >=0.0 ) { // this is a thermal