Example #1
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;
 }
Example #2
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;
        }
Example #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);
        }
 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;
 }