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; }
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; }
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; }