Wrap angle function#
-
float uz_signals_wrap(float number, float limit)#
wraps a number to the range of [0, limit]
- Parameters:
number – number to wrap
limit – defines the wrapping limit of [0, limit]
- Returns:
wrapped number
Example#
1#include "uz_signals.h"
2int main(void) {
3 theta = 13.0f;
4 float theta_wrapped = uz_signals_wrap(theta, 2.0f*UZ_PIf);
5}
Use-case#
This function limits values (e.g., angles) to \([0, 2\pi]\). The intended use case is for the electric rotor angle of a machine, which is usually a mechanic angle multiplied by the pole pairs.
Fig. 267 Example wrapping to \([0, 2\pi]\)#
Description#
Wraps the input number to the range of \([0, limit]\) by using the remainderf
function.
Therefore, technically other upper limits than \(2\pi\) can be used if desired.
Only limits greater than 0 are allowed!
Hint
If a lower limit other than 0 is needed, e.g., as \([-\pi, \pi]\), apply \([0, limit]\) as limit and subtract \(\pi\) afterward.
Calculation#
If the number is already in the range, it will be unchanged.
If it is not in the range, remainderf
will be applied.
If the result is positive, it is in the range and will be returned.
Otherwise, the limit is added to the remainder and returned.