LitDev.LDColours.HSL2RGB C# (CSharp) Method

HSL2RGB() public static method

public static HSL2RGB ( double H, double S, double L ) : double[]
H double
S double
L double
return double[]
        public static double[] HSL2RGB(double H, double S, double L)
        {
            while (H < 0.0) H += 360.0;
            while (H > 360.0) H -= 360.0;
            S = S < 0.0 ? 0.0 : S > 1.0 ? 1.0 : S;
            L = L < 0.0 ? 0.0 : L > 1.0 ? 1.0 : L;

            double C = (1.0 - System.Math.Abs(2.0 * L - 1.0)) * S;
            double H2 = H / 60.0;
            double X = C * (1.0 - System.Math.Abs(H2 % 2.0 - 1.0));

            double[] RGB;

            if (H2 >= 0.0 && H2 < 1.0) RGB = new double[] { C, X, 0 };
            else if (H2 >= 1.0 && H2 < 2.0) RGB = new double[] { X, C, 0 };
            else if (H2 >= 2.0 && H2 < 3.0) RGB = new double[] { 0, C, X };
            else if (H2 >= 3.0 && H2 < 4.0) RGB = new double[] { 0, X, C };
            else if (H2 >= 4.0 && H2 < 5.0) RGB = new double[] { X, 0, C };
            else if (H2 >= 5.0 && H2 < 6.0) RGB = new double[] { C, 0, X };
            else RGB = new double[] { 0, 0, 0 };

            double m = L - C / 2.0;
            for (int i = 0; i < 3; i++) RGB[i] += m;

            return RGB;
        }