using static System.Math;

namespace InnovEnergy.Lib.Units;

public sealed class Angle : Unit
{
    public override String Symbol => "rad"; 

    public Angle(Double value): base(Normalize(value))
    {
    }

    private static Double Normalize(Double value)
    {
        var modulo = value % Tau; // tau is 2pi

        return modulo > PI
             ? modulo - Tau
             : modulo;
    }

    public static implicit operator Angle(Double d) => new Angle(d);
    public static implicit operator Double(Angle d) => d.Value;
}