diff --git a/Angle32.h b/Angle32.h new file mode 100644 index 0000000..4820af6 --- /dev/null +++ b/Angle32.h @@ -0,0 +1,21 @@ +#include "AngleUsing.h" + +#include "Angle.h" +#include + +typedef AngleUsing Angle32; + +template <> Angle32::AngleUsing(float angle) { + if (!isfinite(angle)) { + value = 0; + return; + } + + // map float [-180..180) to integer [-2147483648..2147483647] + this->value = (signed short)((angle / 360.0F) * 4294967295.0F); +} + +template <> float Angle32::ToFloat() const { + float f = ((this->value * 180) / 2147483648.0F); + return f; +}