#178: improve normalization issue (avoid loops altogether)
thanks to Torsten
This commit is contained in:
parent
68dec9af2d
commit
b2c03e4efc
1 changed files with 2 additions and 6 deletions
|
@ -115,7 +115,7 @@ HeadingIndicatorDG::update (double dt)
|
||||||
// Next, calculate time-based precession
|
// Next, calculate time-based precession
|
||||||
double offset = _offset_node->getDoubleValue();
|
double offset = _offset_node->getDoubleValue();
|
||||||
offset -= dt * (0.25 / 60.0); // 360deg/day
|
offset -= dt * (0.25 / 60.0); // 360deg/day
|
||||||
SG_NORMALIZE_RANGE(offset, -360.0, 360.0);
|
offset = SGMiscd::normalizePeriodic(-360.0,360.0,offset);
|
||||||
_offset_node->setDoubleValue(offset);
|
_offset_node->setDoubleValue(offset);
|
||||||
|
|
||||||
// No magvar - set the alignment manually
|
// No magvar - set the alignment manually
|
||||||
|
@ -153,11 +153,7 @@ HeadingIndicatorDG::update (double dt)
|
||||||
_last_heading_deg = heading;
|
_last_heading_deg = heading;
|
||||||
|
|
||||||
heading += offset + align + error;
|
heading += offset + align + error;
|
||||||
// sanity check: bail out when the FDM runs wild, to avoid
|
heading = SGMiscd::normalizePeriodic(0.0,360.0,heading);
|
||||||
// SG_NORMALIZE_RANGE from freezing on huge/infinite numbers.
|
|
||||||
if (fabs(heading)>1e10)
|
|
||||||
return;
|
|
||||||
SG_NORMALIZE_RANGE(heading, 0.0, 360.0);
|
|
||||||
|
|
||||||
_heading_out_node->setDoubleValue(heading);
|
_heading_out_node->setDoubleValue(heading);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue