colorMode(HSB, 360, 100, 100, 100);
while (palette.length < 5) {
palette = shuffle(chromotome.get().colors);
for (let i = 0; i < palette.length; i++) {
let c = color(palette[i]);
translate(width / 2, height / 2);
let w = sqrt(sq(width) + sq(height));
translate(-w / 2, -w / 2);
drawingContext.shadowColor = color(0, 0, 0, 15);
drawingContext.shadowBlur = d / 5;
drawingContext.shadowOffsetX = (cos(frameCount * 3) * d) / 10;
drawingContext.shadowOffsetY = (sin(frameCount * 3) * d) / 10;
for (let j = 0; j < num; j++) {
for (let i = 0; i < num; i++) {
let x = i * (r * sin(60)) * 2;
let y = j * (r + r * cos(60));
let colors = shuffle(palette.concat());
let sep = random(10, 50);
let dir = random() > 0.5 ? -1 : 1;
let gradient = drawingContext.createRadialGradient(0, 0, 0, 0, 0, s);
gradient.addColorStop(0, colors[0]);
gradient.addColorStop(1, colors[1]);
drawingContext.fillStyle = gradient;
for (let i = sep; i > 0; i--) {
rotate(map(i, sep, 0, 0, 10) * dir);
for (let angle = 0; angle < 360; angle += 360 / 3) {
vertex(cos(angle) * t, sin(angle) * t);
let x2 = x + cos(30) * r;
let y2 = y + sin(30) * r;
dir = random() > 0.5 ? -1 : 1;
gradient.addColorStop(0, colors[2]);
gradient.addColorStop(1, colors[3]);
drawingContext.fillStyle = gradient;
for (let i = sep; i > 0; i--) {
rotate(map(i, sep, 0, 0, 10) * dir);
for (let angle = 0; angle < 360; angle += 360 / 3) {
vertex(cos(angle) * t, sin(angle) * t);
function createPalette(_url) {
let slash_index = _url.lastIndexOf("/");
let pallate_str = _url.slice(slash_index + 1);
let arr = pallate_str.split("-");
for (let i = 0; i < arr.length; i++) {
arr[i] = color("#" + arr[i]);