public static float ComputeKa(CieXyz whitePoint) { if (whitePoint.Equals(Illuminants.C)) { return(175F); } return(100F * (175F / 198.04F) * (whitePoint.X + whitePoint.Y)); }
public static float ComputeKa(CieXyz whitePoint) { DebugGuard.NotNull(whitePoint, nameof(whitePoint)); if (whitePoint.Equals(Illuminants.C)) { return(175F); } return(100F * (175F / 198.04F) * (whitePoint.X + whitePoint.Y)); }
/// <inheritdoc/> public CieXyz Transform(CieXyz sourceColor, CieXyz sourceWhitePoint, CieXyz targetWhitePoint) { if (sourceWhitePoint.Equals(targetWhitePoint)) { return(sourceColor); } Lms sourceColorLms = this.converter.Convert(sourceColor); Lms sourceWhitePointLms = this.converter.Convert(sourceWhitePoint); Lms targetWhitePointLms = this.converter.Convert(targetWhitePoint); var vector = new Vector3(targetWhitePointLms.L / sourceWhitePointLms.L, targetWhitePointLms.M / sourceWhitePointLms.M, targetWhitePointLms.S / sourceWhitePointLms.S); var targetColorLms = new Lms(Vector3.Multiply(vector, sourceColorLms.Vector)); return(this.converter.Convert(targetColorLms)); }