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)); }
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)); }
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)); }