mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-22 07:44:03 -04:00
AP_Math: add function to convert any base to any base
Example: convert dec 12345 to 0x12345 or dec 1200 to octal 1200
This commit is contained in:
parent
b502582d14
commit
935cb39dff
@ -128,6 +128,23 @@ float throttle_curve(float thr_mid, float alpha, float thr_in)
|
||||
return thr_out;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert any base number to any base number. Example octal(8) to decimal(10)
|
||||
* baseIn: base of input number
|
||||
* baseOut: base of output number
|
||||
* inputNumber: value currently in base "baseIn" to be converted to base "baseOut"
|
||||
*/
|
||||
uint32_t convertMathBase(const uint8_t baseIn, const uint8_t baseOut, uint32_t inputNumber)
|
||||
{
|
||||
uint32_t outputNumber = 0;
|
||||
|
||||
for (uint8_t i=0; inputNumber != 0; i++) {
|
||||
outputNumber += (inputNumber % baseOut) * powf(float(baseIn), i);
|
||||
inputNumber /= baseOut;
|
||||
}
|
||||
return outputNumber;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T wrap_180(const T angle)
|
||||
{
|
||||
|
@ -265,6 +265,9 @@ constexpr float expo_curve(float alpha, float input);
|
||||
*/
|
||||
float throttle_curve(float thr_mid, float alpha, float thr_in);
|
||||
|
||||
// Convert any base number to any base number. Example octal(8) to decimal(10)
|
||||
uint32_t convertMathBase(const uint8_t baseIn, const uint8_t baseOut, uint32_t inputNumber);
|
||||
|
||||
/* simple 16 bit random number generator */
|
||||
uint16_t get_random16(void);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user