} else if ( heading_mode == FG_HEADING_NAV1 ) {
double tgt_radial;
double cur_radial;
- if ( current_radiostack->get_nav1_loc() ) {
- tgt_radial = current_radiostack->get_nav1_radial() + 180.0;
- } else {
- tgt_radial = current_radiostack->get_nav1_radial();
- }
+ tgt_radial = current_radiostack->get_nav1_radial()
+ + FGBFI::getMagVar();
cur_radial = current_radiostack->get_nav1_heading();
- cout << "target rad = " << tgt_radial
- << " current rad = " << cur_radial
+ cout << "target rad (true) = " << tgt_radial
+ << " current rad (true) = " << cur_radial
<< endl;
double diff = (tgt_radial - cur_radial);
TargetHeading = cur_radial - diff;
while ( TargetHeading < 0.0 ) { TargetHeading += 360.0; }
while ( TargetHeading > 360.0 ) { TargetHeading -= 360.0; }
- cout << "target course = " << TargetHeading << endl;
+ cout << "target course (true) = " << TargetHeading << endl;
} else if ( heading_mode == FG_HEADING_WAYPOINT ) {
// update target heading to waypoint
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
-// #define ANTI_ALIAS_HUD
+ // #define ANTI_ALIAS_HUD
#ifdef ANTI_ALIAS_HUD
#define HUD_COLOR(r,g,b) glColor4f(r,g,b,hud_trans_alpha)
glEnable(GL_LINE_SMOOTH);
> have it tumble when you exceed the usual pitch or bank limits,
> put in those insidious turning errors ... for now anyway.
*/
- the_DG_deg = FGBFI::getHeading () - FGBFI::getMagVar ();
+ the_DG_deg = FGBFI::getHeading () - FGBFI::getMagVar();
/**************************
Finished updates, now clear the timer
double y = (FGBFI::getAltitude() - current_radiostack->get_nav1_elev())
* FEET_TO_METER;
double angle = atan2( y, x ) * RAD_TO_DEG;
- return current_radiostack->get_nav1_target_gs() - angle;
+ return (current_radiostack->get_nav1_target_gs() - angle) * 5.0;
} else {
return 0.0;
}
double r;
if ( current_radiostack->get_nav1_inrange() ) {
- r = current_radiostack->get_nav1_heading() -
- current_radiostack->get_nav1_radial();
+ r = current_radiostack->get_nav1_heading() - FGBFI::getMagVar()
+ - current_radiostack->get_nav1_radial();
// cout << "Radial = " << current_radiostack->get_nav1_radial()
// << " Bearing = " << current_radiostack->get_nav1_heading()
// << endl;
if (r<-180.0) r+=360.0;
if ( fabs(r) > 90.0 )
r = ( r<0.0 ? -r-180.0 : -r+180.0 );
- if ( current_radiostack->get_nav1_loc() ) r *= -5.0;
+ if ( current_radiostack->get_nav1_loc() ) r *= 5.0;
} else {
r = 0.0;
}
double r;
if ( current_radiostack->get_nav2_inrange() ) {
- r = current_radiostack->get_nav2_radial() -
- current_radiostack->get_nav2_heading() + 180.0;
+ r = current_radiostack->get_nav2_heading() - FGBFI::getMagVar()
+ - current_radiostack->get_nav2_radial();
// cout << "Radial = " << current_radiostack->get_nav1_radial()
// << " Bearing = " << current_radiostack->get_nav1_heading() << endl;
double r;
if ( current_radiostack->get_adf_inrange() ) {
- r = current_radiostack->get_adf_heading() - FGBFI::getHeading() + 180.0;
+ r = current_radiostack->get_adf_heading() - FGBFI::getHeading();
// cout << "Radial = " << current_radiostack->get_adf_heading()
// << " Heading = " << FGBFI::getHeading() << endl;
magvar = SGMagVar( lat, lon, alt_m / 1000.0, (long)jd, field );
magdip = atan(field[5]/sqrt(field[3]*field[3]+field[4]*field[4]));
+ FG_LOG( FG_EVENT, FG_DEBUG,
+ " Current magvar = " << magvar );
+
FG_LOG( FG_EVENT, FG_DEBUG,
" Current lon=0.00 Sidereal Time = " << gst );
FG_LOG( FG_EVENT, FG_DEBUG,