/* * Author: Andrey Pokidov * License: Apache-2.0 * Date: 18 Nov 2024 */ namespace BGC { public class TurnFP32 { public static float ToRadians(float turns) { return turns * RadianFP32.TWO_PI; } public static float ToDegrees(float turns) { return turns * 360.0f; } public static float ToUnits(float turns, AngleUnit toUnit) { if (toUnit == AngleUnit.RADIANS) { return turns * RadianFP32.TWO_PI; } if (toUnit == AngleUnit.DEGREES) { return turns * 360.0f; } return turns; } public static float Normalize(float turns, AngleRange range) { if (range == AngleRange.UNSIGNED_RANGE) { if (0.0f <= turns && turns < 1.0f) { return turns; } } else { if (-0.5f < turns && turns <= 0.5f) { return turns; } } float rest = turns - MathF.Floor(turns); if (range == AngleRange.SIGNED_RANGE && rest > 0.5f) { rest -= 1.0f; } return rest; } } }