mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-17 06:17:35 +08:00
fixed calculation of magentic table values by using floor instead of int casting
This commit is contained in:
committed by
Lorenz Meier
parent
54ac147ae8
commit
710c52980e
@@ -49,6 +49,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
using math::constrain;
|
using math::constrain;
|
||||||
|
using math::floorf;
|
||||||
|
|
||||||
/** set this always to the sampling in degrees for the table below */
|
/** set this always to the sampling in degrees for the table below */
|
||||||
static constexpr float SAMPLING_RES = 10.0f;
|
static constexpr float SAMPLING_RES = 10.0f;
|
||||||
@@ -139,8 +140,8 @@ get_table_data(float lat, float lon, const int8_t table[13][37])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* round down to nearest sampling resolution */
|
/* round down to nearest sampling resolution */
|
||||||
float min_lat = int(lat / SAMPLING_RES) * SAMPLING_RES;
|
float min_lat = floorf(lat / SAMPLING_RES) * SAMPLING_RES;
|
||||||
float min_lon = int(lon / SAMPLING_RES) * SAMPLING_RES;
|
float min_lon = floorf(lon / SAMPLING_RES) * SAMPLING_RES;
|
||||||
|
|
||||||
/* find index of nearest low sampling point */
|
/* find index of nearest low sampling point */
|
||||||
unsigned min_lat_index = get_lookup_table_index(&min_lat, SAMPLING_MIN_LAT, SAMPLING_MAX_LAT);
|
unsigned min_lat_index = get_lookup_table_index(&min_lat, SAMPLING_MIN_LAT, SAMPLING_MAX_LAT);
|
||||||
|
|||||||
@@ -70,6 +70,16 @@ float degrees(float radians)
|
|||||||
return (radians * 180.0f) / M_PI_F;
|
return (radians * 180.0f) / M_PI_F;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int floorf(float input)
|
||||||
|
{
|
||||||
|
int res = int(input);
|
||||||
|
if (res > input) {
|
||||||
|
res--;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace math
|
} // namespace math
|
||||||
|
|
||||||
#endif /* ECL_STANDALONE */
|
#endif /* ECL_STANDALONE */
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ float max(float val1, float val2);
|
|||||||
float constrain(float val, float min, float max);
|
float constrain(float val, float min, float max);
|
||||||
float radians(float degrees);
|
float radians(float degrees);
|
||||||
float degrees(float radians);
|
float degrees(float radians);
|
||||||
|
int floorf(float input);
|
||||||
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|||||||
Reference in New Issue
Block a user