63 lines
1.3 KiB
C#
63 lines
1.3 KiB
C#
|
|
/*
|
|
* Author: Andrey Pokidov
|
|
* Date: 18 Nov 2024
|
|
*/
|
|
|
|
namespace BasicGeometry
|
|
{
|
|
public class FP32Turns
|
|
{
|
|
public static float ToRadians(float turns)
|
|
{
|
|
return turns * FP32Radians.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 * FP32Radians.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;
|
|
}
|
|
}
|
|
}
|