From 019b6d29fe81b205d36ac34f52eb6e18ffe8f2b4 Mon Sep 17 00:00:00 2001 From: curt Date: Fri, 31 Aug 2001 18:07:23 +0000 Subject: [PATCH] Fixed [simple] terrain following altitude hold mode to work again. --- src/Autopilot/newauto.hxx | 2 ++ src/FDM/JSBSim.cxx | 2 ++ src/FDM/LaRCsim.cxx | 2 +- src/Main/fg_props.cxx | 12 ++++++++++-- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Autopilot/newauto.hxx b/src/Autopilot/newauto.hxx index 87b6d7545..22af68a61 100644 --- a/src/Autopilot/newauto.hxx +++ b/src/Autopilot/newauto.hxx @@ -176,6 +176,8 @@ public: inline void set_TargetDistance( double val ) { TargetDistance = val; } inline double get_TargetAltitude() const { return TargetAltitude; } inline void set_TargetAltitude( double val ) { TargetAltitude = val; } + inline double get_TargetAGL() const { return TargetAGL; } + inline void set_TargetAGL( double val ) { TargetAGL = val; } inline double get_TargetClimbRate() const { return TargetClimbRate; } inline void set_TargetClimbRate( double val ) { TargetClimbRate = val; } diff --git a/src/FDM/JSBSim.cxx b/src/FDM/JSBSim.cxx index 4786bd662..406ce3a42 100644 --- a/src/FDM/JSBSim.cxx +++ b/src/FDM/JSBSim.cxx @@ -381,6 +381,8 @@ bool FGJSBsim::copy_from_JSBsim() { Position->GetLongitude(), Position->Geth() ); + _set_Altitude_AGL( Position->GetDistanceAGL() ); + _set_Euler_Angles( Rotation->Getphi(), Rotation->Gettht(), Rotation->Getpsi() ); diff --git a/src/FDM/LaRCsim.cxx b/src/FDM/LaRCsim.cxx index da2ee8159..be54fb096 100644 --- a/src/FDM/LaRCsim.cxx +++ b/src/FDM/LaRCsim.cxx @@ -469,7 +469,7 @@ bool FGLaRCsim::copy_from_LaRCsim() { _set_Geodetic_Position( Latitude, tmp_lon, Altitude ); _set_Euler_Angles( Phi, Theta, Psi ); - _set_Altitude_AGL( Altitude-Runway_altitude ); + _set_Altitude_AGL( Altitude - Runway_altitude ); // Miscellaneous quantities _set_T_Local_to_Body(T_local_to_body_m); diff --git a/src/Main/fg_props.cxx b/src/Main/fg_props.cxx index 396aa66e2..a2b34155a 100644 --- a/src/Main/fg_props.cxx +++ b/src/Main/fg_props.cxx @@ -571,6 +571,12 @@ setAPTerrainLock (bool lock) { current_autopilot->set_AltitudeMode(FGAutopilot::FG_ALTITUDE_TERRAIN); current_autopilot->set_AltitudeEnabled(lock); + current_autopilot->set_TargetAGL( + current_aircraft.fdm_state->get_Altitude_AGL() * SG_FEET_TO_METER + ); + cout << "Target AGL = " + << current_aircraft.fdm_state->get_Altitude_AGL() * SG_FEET_TO_METER + << endl; } @@ -1030,6 +1036,8 @@ fgInitProps () fgSetArchivable("/autopilot/locks/glide-slope"); fgTie("/autopilot/locks/terrain", getAPTerrainLock, setAPTerrainLock); fgSetArchivable("/autopilot/locks/terrain"); + fgTie("/autopilot/settings/agl-ft", getAPAltitude, setAPAltitude); + fgSetArchivable("/autopilot/settings/agl-ft"); fgTie("/autopilot/settings/climb-rate-fpm", getAPClimb, setAPClimb, false); fgSetArchivable("/autopilot/settings/climb-rate-fpm"); fgTie("/autopilot/locks/heading", getAPHeadingLock, setAPHeadingLock); @@ -1195,7 +1203,7 @@ FGAndCondition::FGAndCondition () FGAndCondition::~FGAndCondition () { - for (int i = 0; i < _conditions.size(); i++) + for (unsigned int i = 0; i < _conditions.size(); i++) delete _conditions[i]; } @@ -1228,7 +1236,7 @@ FGOrCondition::FGOrCondition () FGOrCondition::~FGOrCondition () { - for (int i = 0; i < _conditions.size(); i++) + for (unsigned int i = 0; i < _conditions.size(); i++) delete _conditions[i]; } -- 2.39.5