JavaScript代码实现
class ColorGenerator {
static GOLDEN_RATIO_CONJUGATE: number = 0.618033988749895
static colorSeed = Math.random()
static hsv_to_rgb(h: number, s: number, v: number) {
let h_i = Math.floor(h * 6);
let f = h * 6 - h_i;
let p = v * (1 - s);
let q = v * (1 - f * s);
let t = v * (1 - (1 - f) * s);
let r = 0;
let g = 0;
let b = 0;
if (h_i == 0) {
[r, g, b] = [v, t, p];
} else if (h_i == 1) {
[r, g, b] = [q, v, p];
} else if (h_i == 2) {
[r, g, b] = [p, v, t];
} else if (h_i == 3) {
[r, g, b] = [p, q, v];
} else if (h_i == 4) {
[r, g, b] = [t, p, v];
} else if (h_i == 5) {
[r, g, b] = [v, p, q];
}
return `#${
Math.floor(r * 256).toString(16)
}${
Math.floor(g * 256).toString(16)
}${
Math.floor(b * 256).toString(16)
}`;
}
static genGolor() {
ColorGenerator.colorSeed += ColorGenerator.GOLDEN_RATIO_CONJUGATE;
ColorGenerator.colorSeed %= 1;
return ColorGenerator.hsv_to_rgb(ColorGenerator.colorSeed, 0.5, 0.95)
}
}
ColorGenerator.genGolor()
实现效果
参考文献
How to Generate Random Colors Programmatically