Моя идея - начать с цветовой модели HSV и пройтись по периметру (оттенку) с максимальной насыщенностью и значением:
function hsvToRgb(h, s, v) {
//... see e.g.: http://snipplr.com/view/14590
}
function distinctColors(count) {
var colors = [];
for(hue = 0; hue < 360; hue += 360 / count) {
colors.push(hsvToRgb(hue, 100, 100));
}
return colors;
}
. distinctColors(10)
производит:
[[255, 0, 0], [255, 153, 0], [204, 255, 0], [51, 255, 0], [0, 255, 102], [0, 255, 255], [0, 102, 255], [51, 0, 255], [204, 0, 255], [255, 0, 153]]
Трудно сказать, глядя только на значения RGB, но они должны быть как можно более разными.Я взял hsvToRgb()
реализацию от здесь .