public static float ComputeKa(CieXyz whitePoint)
        {
            if (whitePoint.Equals(Illuminants.C))
            {
                return(175F);
            }

            return(100F * (175F / 198.04F) * (whitePoint.X + whitePoint.Y));
        }
示例#2
0
        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));
        }