/** * Iquizeles color generator * @module lib/color.js; */ const palettes = [ [ [0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 1.0], [0.0, 0.33, 0.67], ], [ [0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 1.0], [0.0, 0.1, 0.2], ], [ [0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 1.0], [0.3, 0.2, 0.2], ], [ [0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 1.0, 0.5], [0.8, 0.9, 0.3], ], [ [0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [1.0, 0.7, 0.4], [0.0, 0.15, 0.2], ], [ [0.5, 0.5, 0.5], [0.5, 0.5, 0.5], [2.0, 1.0, 0.0], [0.5, 0.2, 0.25], ], [ [0.8, 0.5, 0.4], [0.2, 0.4, 0.2], [2.0, 1.0, 1.0], [0.0, 0.25, 0.25], ], ]; let palette = palettes[0]; function channel(t, a, b, c, d, add, mul) { return a + b * Math.cos(2 * Math.PI * (c * t + d)) * mul + add; } function color(t, add, mul) { let a, b, c, d; const rgb = []; for (var i = 0; i < 3; i++) { a = palette[0][i]; b = palette[1][i]; c = palette[2][i]; d = palette[3][i]; rgb[i] = Math.round(channel(t, a, b, c, d, add, mul) * 255); } return "rgb(" + rgb + ")"; } export default color;