Пример #1
0
            internal static IRgb ToColor(ILuv item)
            {
                var          white  = XyzConverter.WhiteReference;
                const double c      = -1.0 / 3.0;
                var          uPrime = (4.0 * white.X) / GetDenominator(white);
                var          vPrime = (9.0 * white.Y) / GetDenominator(white);
                var          a      = (1.0 / 3.0) * ((52.0 * item.L) / (item.U + 13 * item.L * uPrime) - 1.0);
// ReSharper disable once InconsistentNaming
                var imteL_16_116 = (item.L + 16.0) / 116.0;
                var y            = item.L > XyzConverter.Kappa * XyzConverter.Epsilon
                    ? imteL_16_116 * imteL_16_116 * imteL_16_116
                    : item.L / XyzConverter.Kappa;
                var b   = -5.0 * y;
                var d   = y * ((39.0 * item.L) / (item.V + 13.0 * item.L * vPrime) - 5.0);
                var x   = (d - b) / (a - c);
                var z   = x * a + b;
                var xyz = new Xyz
                {
                    X = 100 * x,
                    Y = 100 * y,
                    Z = 100 * z
                };

                return(xyz.ToRgb());
            }
Пример #2
0
 internal static IRgb ToColor(IYxy item)
 {
     var xyz = new Xyz
         {
             X = item.X * (item.Y1 / item.Y2),
             Y = item.Y1,
             Z = (1.0 - item.X - item.Y2) * (item.Y1 / item.Y2)
         };
     return xyz.ToRgb();
 }
Пример #3
0
        internal static IRgb ToColor(IYxy item)
        {
            var xyz = new Xyz
            {
                X = item.X * (item.Y1 / item.Y2),
                Y = item.Y1,
                Z = (1.0 - item.X - item.Y2) * (item.Y1 / item.Y2)
            };

            return(xyz.ToRgb());
        }
Пример #4
0
        internal static IRgb ToColor(ILab item)
        {
            var y = (item.L + 16.0) / 116.0;
            var x = item.A / 500.0 + y;
            var z = y - item.B / 200.0;

            var white = XyzConverter.WhiteReference;
            var xyz   = new Xyz
            {
                X = white.X * (Math.Pow(x, 3) > XyzConverter.Epsilon ? Math.Pow(x, 3) : (x - 16.0 / 116.0) / 7.787),
                Y = white.Y * (item.L > (XyzConverter.Kappa * XyzConverter.Epsilon) ? Math.Pow(((item.L + 16.0) / 116.0), 3) : item.L / XyzConverter.Kappa),
                Z = white.Z * (Math.Pow(z, 3) > XyzConverter.Epsilon ? Math.Pow(z, 3) : (z - 16.0 / 116.0) / 7.787)
            };

            return(xyz.ToRgb());
        }
Пример #5
0
        internal static IRgb ToColor(ILab item)
        {
            var y = (item.L + 16.0) / 116.0;
            var x = item.A / 500.0 + y;
            var z = y - item.B / 200.0;

            var white = XyzConverter.WhiteReference;
            var x3 = x * x * x;
            var z3 = z * z * z;
            var xyz = new Xyz
                {
                    X = white.X * (x3 > XyzConverter.Epsilon ? x3 : (x - 16.0 / 116.0) / 7.787),
                    Y = white.Y * (item.L > (XyzConverter.Kappa * XyzConverter.Epsilon) ? Math.Pow(((item.L + 16.0) / 116.0), 3) : item.L / XyzConverter.Kappa),
                    Z = white.Z * (z3 > XyzConverter.Epsilon ? z3 : (z - 16.0 / 116.0) / 7.787)
                };

            return xyz.ToRgb();
        }
Пример #6
0
        internal static IRgb ToColor(ILab item)
        {
            var y = (item.L + 16) / 116.0;
            var x = item.A / 500.0 + y;
            var z = y - item.B / 200.0;

            y = Math.Pow(y, 3) > 0.008856 ? Math.Pow(y, 3) : (y - 16/116)/7.787;
            x = Math.Pow(x, 3) > 0.008856 ? Math.Pow(x, 3) : (x - 16/116)/7.787;
            z = Math.Pow(z, 3) > 0.008856 ? Math.Pow(z, 3) : (z - 16/116)/7.787;

            var xyz = new Xyz
                {
                    X = RefX*x,
                    Y = RefY*y,
                    Z = RefZ*z
                };

            return xyz.ToRgb();
        }
Пример #7
0
        internal static IRgb ToColor(ILab item)
        {
            var y = (item.L + 16) / 116.0;
            var x = item.A / 500.0 + y;
            var z = y - item.B / 200.0;

            y = Math.Pow(y, 3) > 0.008856 ? Math.Pow(y, 3) : (y - 16 / 116) / 7.787;
            x = Math.Pow(x, 3) > 0.008856 ? Math.Pow(x, 3) : (x - 16 / 116) / 7.787;
            z = Math.Pow(z, 3) > 0.008856 ? Math.Pow(z, 3) : (z - 16 / 116) / 7.787;

            var xyz = new Xyz
            {
                X = RefX * x,
                Y = RefY * y,
                Z = RefZ * z
            };

            return(xyz.ToRgb());
        }
Пример #8
0
            internal static IRgb ToColor(ILab item)
            {
                double y = (item.L + 16.0) / 116.0;
                double x = item.A / 500.0 + y;
                double z = y - item.B / 200.0;

                IXyz   white = XyzConverter.WhiteReference;
                double x3    = x * x * x;
                double z3    = z * z * z;
                var    xyz   = new Xyz
                {
                    X = white.X * (x3 > XyzConverter.Epsilon ? x3 : (x - 16.0 / 116.0) / 7.787),
                    Y =
                        white.Y *
                        (item.L > (XyzConverter.Kappa * XyzConverter.Epsilon)
                                           ? Math.Pow(((item.L + 16.0) / 116.0), 3)
                                           : item.L / XyzConverter.Kappa),
                    Z = white.Z * (z3 > XyzConverter.Epsilon ? z3 : (z - 16.0 / 116.0) / 7.787)
                };

                return(xyz.ToRgb());
            }
Пример #9
0
 internal static IRgb ToColor(ILuv item)
 {
     var white = XyzConverter.WhiteReference;
     const double c = -1.0 / 3.0;
     var uPrime = (4.0 * white.X) / GetDenominator(white);
     var vPrime = (9.0 * white.Y) / GetDenominator(white);
     var a = (1.0 / 3.0) * ((52.0 * item.L) / (item.U + 13 * item.L * uPrime) - 1.0);
     var imteL_16_116 = (item.L + 16.0) / 116.0;
     var y = item.L > XyzConverter.Kappa * XyzConverter.Epsilon
                 ? imteL_16_116 * imteL_16_116 * imteL_16_116
                 : item.L / XyzConverter.Kappa;
     var b = -5.0 * y;
     var d = y * ((39.0 * item.L) / (item.V + 13.0 * item.L * vPrime) - 5.0);
     var x = (d - b) / (a - c);
     var z = x * a + b;
     var xyz = new Xyz
         {
             X = 100 * x,
             Y = 100 * y,
             Z = 100 * z
         };
     return xyz.ToRgb();
 }
Пример #10
0
        internal static IRgb ToColor(ILuv item)
        {
            var          white      = XyzConverter.WhiteReference;
            const double c          = -1.0 / 3.0;
            var          uPrime     = 4.0 * white.X / GetDenominator(white);
            var          vPrime     = 9.0 * white.Y / GetDenominator(white);
            var          a          = 1.0 / 3.0 * (52.0 * item.L / (item.U + 13 * item.L * uPrime) - 1.0);
            var          imteL16116 = (item.L + 16.0) / 116.0;
            var          y          = item.L > XyzConverter.Kappa * XyzConverter.Epsilon
                ? imteL16116 * imteL16116 * imteL16116
                : item.L / XyzConverter.Kappa;
            var b   = -5.0 * y;
            var d   = y * (39.0 * item.L / (item.V + 13.0 * item.L * vPrime) - 5.0);
            var x   = (d - b) / (a - c);
            var z   = x * a + b;
            var xyz = new Xyz
            {
                X = 100 * x,
                Y = 100 * y,
                Z = 100 * z
            };

            return(xyz.ToRgb());
        }