Beispiel #1
0
        protected override void FromRgb(Rgb color)
        {
            var xyz = color.ToColorSpace <Xyz>();

            L = 10.0 * System.Math.Sqrt(xyz.Y);
            A = !xyz.Y.Equals(0) ? 17.5 * ((1.02 * xyz.X - xyz.Y) / System.Math.Sqrt(xyz.Y)) : 0;
            B = !xyz.Y.Equals(0) ? 7.0 * ((xyz.Y - 0.847 * xyz.Z) / System.Math.Sqrt(xyz.Y)) : 0;
        }
Beispiel #2
0
        protected override void FromRgb(Rgb color)
        {
            var xyz      = color.ToColorSpace <Xyz>();
            var dividend = xyz.X + xyz.Y + xyz.Z;

            Y1 = xyz.Y;
            X  = dividend.ApproximatelyEquals(0) ? 0 : xyz.X / dividend;
            Y2 = dividend.ApproximatelyEquals(0) ? 0 : xyz.Y / dividend;
        }
Beispiel #3
0
        protected override void FromRgb(Rgb color)
        {
            var xyz = color.ToColorSpace <Xyz>();
            var x   = xyz.X / Xyz.WhiteReference[0];
            var y   = xyz.Y / Xyz.WhiteReference[1];
            var z   = xyz.Z / Xyz.WhiteReference[2];

            x = x > Xyz.Epsilon ? CubicRoot(x) : (Xyz.Kappa * x + 16) / 116;
            y = y > Xyz.Epsilon ? CubicRoot(y) : (Xyz.Kappa * y + 16) / 116;
            z = z > Xyz.Epsilon ? CubicRoot(z) : (Xyz.Kappa * z + 16) / 116;

            L = System.Math.Max(0, 116 * y - 16);
            A = 500 * (x - y);
            B = 200 * (y - z);
        }
Beispiel #4
0
        protected override void FromRgb(Rgb color)
        {
            var xyz = color.ToColorSpace <Xyz>();
            var y   = xyz.Y / Xyz.WhiteReference[1];

            L = y > Xyz.Epsilon ? 116.0 * System.Math.Pow(y, 1.0 / 3.0) - 16.0 : Xyz.Kappa * y;

            var targetDenominator    = xyz.X + 15.0 * xyz.Y + 3.0 * xyz.Z;
            var referenceDenominator = Xyz.WhiteReference[0] + 15.0 * Xyz.WhiteReference[1] + 3.0 * Xyz.WhiteReference[2];
            var xTarget = targetDenominator.Equals(0)
                                ? 0
                                : 4.0 * xyz.X / targetDenominator - 4.0 * Xyz.WhiteReference[0] / referenceDenominator;
            var yTarget = targetDenominator.Equals(0)
                                ? 0
                                : 9.0 * xyz.Y / targetDenominator - 9.0 * Xyz.WhiteReference[1] / referenceDenominator;

            U = 13.0 * L * xTarget;
            V = 13.0 * L * yTarget;
        }