internal static void ToColorSpace(IRgb color, ILuv item) { var xyz = new Xyz(); var white = XyzConverter.WhiteReference; xyz.Initialize(color); var y = xyz.Y / XyzConverter.WhiteReference.Y; item.L = y > XyzConverter.Epsilon ? 116.0 * XyzConverter.CubicRoot(y) - 16.0 : XyzConverter.Kappa * y; var targetDenominator = GetDenominator(xyz); var referenceDenominator = GetDenominator(white); // ReSharper disable CompareOfFloatsByEqualityOperator var xTarget = targetDenominator == 0 ? 0 : ((4.0 * xyz.X / targetDenominator) - (4.0 * white.X / referenceDenominator)); var yTarget = targetDenominator == 0 ? 0 : ((9.0 * xyz.Y / targetDenominator) - (9.0 * white.Y / referenceDenominator)); // ReSharper restore CompareOfFloatsByEqualityOperator item.U = 13.0 * item.L * xTarget; item.V = 13.0 * item.L * yTarget; }
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()); }
protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, ILuv expectedColor) { var target = knownColor.To <Luv>(); Assert.IsTrue(CloseEnough(expectedColor.L, target.L), "(L)" + expectedColor.L + " != " + target.L); Assert.IsTrue(CloseEnough(expectedColor.U, target.U), "(U)" + expectedColor.U + " != " + target.U); Assert.IsTrue(CloseEnough(expectedColor.V, target.V), "(V)" + expectedColor.V + " != " + target.V); }
protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, ILuv expectedColor) { var target = knownColor.To <Luv>(); Assert.AreEqual(expectedColor.L, target.L, 0.5, "(L)" + expectedColor.L + " != " + target.L); Assert.AreEqual(expectedColor.U, target.U, 1.12, "(U)" + expectedColor.U + " != " + target.U); Assert.AreEqual(expectedColor.V, target.V, 0.61, "(V)" + expectedColor.V + " != " + target.V); }
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(); }
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()); }
protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, ILuv expectedColor) { var target = knownColor.To<Luv>(); Assert.IsTrue(CloseEnough(expectedColor.L,target.L),"(L)" + expectedColor.L + " != " + target.L); Assert.IsTrue(CloseEnough(expectedColor.U,target.U),"(U)" + expectedColor.U + " != " + target.U); Assert.IsTrue(CloseEnough(expectedColor.V,target.V),"(V)" + expectedColor.V + " != " + target.V); }
public CmyColor(ILuv luv) { Initialize(luv.ToRgb()); }
public LuvColor(ILuv luv) { Ordinals = luv.Ordinals; }
public HunterLabColor(ILuv luv) { Initialize(luv.ToRgb()); }