Пример #1
0
        public static long GetEuclideanDistance(ColorModelComponents distance /*ColorModel model, Color requestedColor, Color targetColor*/)
        {
            // var comps = GetColorComponentsDistance(model, requestedColor, targetColor);
            var result = distance.ComponentA * distance.ComponentA + distance.ComponentB * distance.ComponentB +
                         distance.ComponentC * distance.ComponentC;

            if (distance.ComponentD.HasValue)
            {
                result += distance.ComponentD.Value * distance.ComponentD.Value;
            }
            return((long)result);
        }
Пример #2
0
        public static ColorModelComponents GetColorComponentsDistance(ColorModel model, Color sourceColor, Color targetColor)
        {
            var sourceComponents = GetColorComponents(model, sourceColor);
            var targetComponents = GetColorComponents(model, targetColor);

            var distance = new ColorModelComponents(
                sourceComponents.ComponentA - targetComponents.ComponentA,
                sourceComponents.ComponentB - targetComponents.ComponentB,
                sourceComponents.ComponentC - targetComponents.ComponentC);

            if (sourceComponents.ComponentD.HasValue && targetComponents.ComponentD.HasValue)
            {
                distance.ComponentD = sourceComponents.ComponentD - targetComponents.ComponentD;
            }

            return(distance);
        }