"https://coolors.co/eb300f-fe7688-fff566-212121-2eb254",
"https://coolors.co/550527-688e26-faa613-f44708-a10702-e1d6de",
"https://coolors.co/124e78-f0f0c9-f2bb05-d74e09-6e0e0a",
"https://coolors.co/564787-dbcbd8-f2fdff-9ad4d6-101935"
COLS = createCols(URL[frameCount % URL.length]);
const mult = random(0.7, 1.05);
const u = min(width , height) * 0.15 * mult;
const mw = random() > 0.5 ? u * 0.5 * random(0.8, 5) : u * 0.5 * random(0.5, 1.3);
const mh = u *0.5* random(0.5, 1.8);
const th = u * 2* random(0.5, 1.5);
const cy = height * 0.55;
const y = cy - (fh + bh);
const treeLen = width * 0.6;
rect(cx - treeLen * 0.5, cy, treeLen, 20);
Bird(fw, fh, mw, mh, bw, bh, th);
function Bird(fw, fh, mw, mh, bw, bh, th)
const fr = min(fw, fh) / 2;
rect(0, 0, fw, fh, fr, 0, 0, 0);
eye(fw * 0.75, fh * 0.25, fr / 2, 0);
rect(0, 0, mw - mh + 1, mh);
arc(mw - mh, mh, mh * 2, mh * 2, -PI /2,0 );
else arc(0, mh, mw * 2, mh * 2, -PI /2,0 );
drawRectTile(0, 0, brw, brh);
drawArcUnit(brw, br / 2, br, br, -PI /2,0);
drawArcUnit(bw - brw, brh, br, br, PI /2, PI);
drawRectTile(bw - brw, br / 2, brw, brh);
drawArcUnit(tw, 0, tr, tr, PI /2, PI);
drawRectTile(0, 0, tw, th - tr / 2);
drawArcUnit(tw, th - tr / 2, tr, tr, PI /2, PI);
function eye(cx, cy, dia, c)
function drawArcUnit(cx, cy, wdia, hdia, sr, er)
const cArr = shuffle(COLS);
arc(0, 0, wdia, hdia, sr, er);
for(let i = 0; i < 3; i++)
ellipse(0, 0, wdia / 3 *( 3- i), hdia / 3 * ( 3- i));
const ishori = random() > 0.5 ? true : false;
for(let i = 0; i < 6; i++)
fill(cArr[i% cArr.length] );
if(ishori)rect(- wdia / 2, -hdia / 2 + hdia / 6 * i, wdia, hdia / 6+ 1);
else rect(- wdia / 2 + wdia / 6 * i, -hdia / 2, wdia / 6 + 1, hdia);
function drawRectTile(x, y, w, h)
const fn = int(random() * UNITFUNCS.length);
UNITFUNCS[fn](x, y, w, h, shuffle(COLS));
const UNITFUNCS = [check,triPattern, curveRect, stripe];
function stripe(x, y, w, h, cArr)
const ishori = random() > 0.5 ? true : false;
for(let i = 0; i < 3; i++)
if(ishori)rect(x, y + h / 3 * i, w, h / 3+ 1);
else rect(x + w / 3 * i, y, w / 3 + 1, h);
function curveRect(x, y, w, h, cArr)
translate(x + int(random(2)) * w, y);
circle(0, 0, min(w, h) * 2);
function triPattern(x, y, w, h, cArr)
const ySpan = h / int(random(1, 3));
for(let y = 0; y < h; y += ySpan)
const xOff = c % 2 == 0 ? 0 : xSpan / 2 * 0;
for(let x = 0; x < w; x += xSpan)
triangle(x + xOff, y, x + xSpan + xOff , y, x + xSpan / 2 + xOff , y + ySpan);
function check(x, y, w, h, cArr)
for(let y = 0; y < h; y += ySpan)
const cOff = c % 2 == 0 ? 0 : 1;
for(let x = 0; x < w; x += xSpan)
rect(x, y, xSpan /2, ySpan );
rect(x + xSpan /2, y, xSpan / 2, ySpan);
let slaIndex = url.lastIndexOf("/");
let colStr = url.slice(slaIndex + 1);
let colArr = colStr.split("-");
for(let i = 0; i < colArr.length; i++)colArr[i] = "#" + colArr[i];