Browse Source

AP_Math: don't optimise longitude_scale on faster CPUs

it causes problems with replay
master
Andrew Tridgell 10 years ago
parent
commit
099392d3ca
  1. 3
      libraries/AP_Math/location.cpp

3
libraries/AP_Math/location.cpp

@ -37,12 +37,15 @@ float longitude_scale(const struct Location &loc) @@ -37,12 +37,15 @@ float longitude_scale(const struct Location &loc)
{
static int32_t last_lat;
static float scale = 1.0;
#if HAL_CPU_CLASS < HAL_CPU_CLASS_150
// don't optimise on faster CPUs. It causes some minor errors on Replay
if (labs(last_lat - loc.lat) < 100000) {
// we are within 0.01 degrees (about 1km) of the
// same latitude. We can avoid the cos() and return
// the same scale factor.
return scale;
}
#endif
scale = cosf(loc.lat * 1.0e-7f * DEG_TO_RAD);
scale = constrain_float(scale, 0.01f, 1.0f);
last_lat = loc.lat;

Loading…
Cancel
Save