]> git.mxchange.org Git - flightgear.git/commitdiff
Smooth out the time-to-intercept radial computation so it's a bit more useful.
authorcurt <curt>
Wed, 30 Sep 2009 20:53:22 +0000 (20:53 +0000)
committerTim Moore <timoore@redhat.com>
Wed, 30 Sep 2009 22:16:30 +0000 (00:16 +0200)
src/Instrumentation/navradio.cxx
src/Instrumentation/navradio.hxx

index 3e779bbcd47353f38b918226aada6b390e1178c2..404bb73000cf864754bf605346ad894aceeaa505 100644 (file)
@@ -137,6 +137,7 @@ FGNavRadio::FGNavRadio(SGPropertyNode *node) :
     last_x(0.0),
     last_loc_dist(0.0),
     last_xtrack_error(0.0),
+    xrate_ms(0.0),
     _localizerWidth(5.0),
     _name(node->getStringValue("name", "nav")),
     _num(node->getIntValue("number", 0)),
@@ -686,7 +687,8 @@ void FGNavRadio::updateCDI(double dt)
   //////////////////////////////////////////////////////////
   double t = 0.0;
   if ( inrange && cdi_serviceable ) {
-    double xrate_ms = (last_xtrack_error - _cdiCrossTrackErrorM) / dt;
+    double cur_rate = (last_xtrack_error - _cdiCrossTrackErrorM) / dt;
+    xrate_ms = 0.99 * xrate_ms + 0.01 * cur_rate;
     if ( fabs(xrate_ms) > 0.00001 ) {
         t = _cdiCrossTrackErrorM / xrate_ms;
     } else {
index 116a90ce7ef43c553cf526778c18eb787a4e6442..d88f0d8764fdc17742c8328e8fa0d58808d08ee5 100644 (file)
@@ -135,6 +135,7 @@ class FGNavRadio : public SGSubsystem
     double last_x;
     double last_loc_dist;
     double last_xtrack_error;
+    double xrate_ms;
     double _localizerWidth; // cached localizer width in degrees
     
     string _name;