public override double Distance(ColorRgb queryCircle, Color3d targetColor, int distX, int distY)
        {
            var queryCircleConverted = queryCircle.ConvertTo <ColorType>();
            var targetColorConverted = targetColor.ConvertTo <ColorType>();

            return(targetColorConverted.Get4dDistanceL2(queryCircleConverted, 0));
        }
示例#2
0
        public override double Distance(ColorRgb queryCircle, Color3d targetColor, int distX, int distY)
        {
            var queryCircleConverted = queryCircle.ConvertTo <ColorType>();
            var targetColorConverted = targetColor.ConvertTo <ColorType>();

            var distFromPoint = (int)Math.Sqrt(distX * distX + distY * distY);

            return(targetColorConverted.Get4dDistanceL2(queryCircleConverted, distFromPoint));
        }
示例#3
0
        public override double Distance(ColorRgb queryCircle, Color3d targetColor, int distX, int distY)
        {
            var queryCircleConverted = queryCircle.ConvertTo <ColorType>();
            var targetColorConverted = targetColor.ConvertTo <ColorType>();

            var dist = distX * distX + distY * distY;

            for (int i = 0; i < queryCircle.Spectrums.Length; i++)
            {
                var spectDiff = targetColorConverted.Spectrums[i] - queryCircleConverted.Spectrums[i];
                dist += spectDiff * spectDiff;
            }

            return(Math.Sqrt(dist));
        }