private static List <LabColor> GenerateSamples(PaletteOptions options) { var samples = new List <LabColor>(); var rangeDivider = Math.Pow(options.Samples, 1.0 / 3.0) * 1.001; var hStep = (options.HueMax - options.HueMin) / rangeDivider; var cStep = (options.ChromaMax - options.ChromaMin) / rangeDivider; var lStep = (options.LightMax - options.LightMin) / rangeDivider; for (double h = options.HueMin; h <= options.HueMax; h += hStep) { for (double c = options.ChromaMin; c <= options.ChromaMax; c += cStep) { for (double l = options.LightMin; l <= options.LightMax; l += lStep) { var color = new HclColor(h, c, l).ToLab(); if (CheckColor(color, options)) { samples.Add(color); } } } } return(samples.Distinct().ToList()); }
private List<LabColor> GenerateColorSamples(PaletteOptions options) { var samples = new List<LabColor>(); var rangeDivider = Math.Pow(options.Samples, 1.0 / 3.0) * 1.001; var hStep = (options.HueMax - options.HueMin) / rangeDivider; var cStep = (options.ChromaMax - options.ChromaMin) / rangeDivider; var lStep = (options.LightMax - options.LightMin) / rangeDivider; for (double h = options.HueMin; h <= options.HueMax; h += hStep) { for (double c = options.ChromaMin; c <= options.ChromaMax; c += cStep) { for (double l = options.LightMin; l <= options.LightMax; l += lStep) { var color = new HclColor(h, c, l).ToLab(); if (color.IsValidRgb() && options.ValidateColor(color)) { samples.Add(color); } } } } return samples; }