From bd9ce60174e996d2048f5054859f729efdbab353 Mon Sep 17 00:00:00 2001 From: curt Date: Sun, 25 Feb 2001 05:42:34 +0000 Subject: [PATCH] Autopilot in Nav1 heading hold mode is now driven just from needle position. --- src/Autopilot/newauto.cxx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Autopilot/newauto.cxx b/src/Autopilot/newauto.cxx index d32ee9aeb..407f10ab9 100644 --- a/src/Autopilot/newauto.cxx +++ b/src/Autopilot/newauto.cxx @@ -377,6 +377,22 @@ int FGAutopilot::run() { } else if ( heading_mode == FG_HEADING_LOCK ) { // leave target heading alone } else if ( heading_mode == FG_HEADING_NAV1 ) { + // track the NAV1 heading needle deflection + double cur_radial = current_radiostack->get_nav1_heading() + + current_radiostack->get_nav1_magvar(); + if ( current_radiostack->get_nav1_from_flag() ) { + cur_radial += 180.0; + while ( cur_radial >= 360.0 ) { cur_radial -= 360.0; } + } + double adjustment = + current_radiostack->get_nav1_heading_needle_deflection() + * (current_radiostack->get_nav1_loc_dist() * METER_TO_NM); + if ( adjustment < -30.0 ) { adjustment = -30.0; } + if ( adjustment > 30.0 ) { adjustment = 30.0; } + TargetHeading = cur_radial + adjustment; + while ( TargetHeading < 0.0 ) { TargetHeading += 360.0; } + while ( TargetHeading > 360.0 ) { TargetHeading -= 360.0; } +#if 0 if ( current_radiostack->get_nav1_to_flag() || current_radiostack->get_nav1_from_flag() ) { // We have an appropriate radial selected that the @@ -419,6 +435,7 @@ int FGAutopilot::run() { // neither TO, or FROM, maintain current heading. TargetHeading = FGBFI::getHeading(); } +#endif MakeTargetHeadingStr( TargetHeading ); // cout << "target course (true) = " << TargetHeading << endl; } else if ( heading_mode == FG_HEADING_WAYPOINT ) { -- 2.39.5