SELF PORTRAIT
function setup() {
smooth();
createCanvas(1400, 1000);
background(232, 232, 228);
}
function draw() {
// BG
noStroke();
let w = random(175, 1200);
let l = random(150, 850);
let r = random(200);
let blue = [135, 206, 250];
let yellow = [255, 219, 88];
let red = [255, 64, 64];
let cols = [blue, yellow, red]
fill(random(cols));
circle(w, l, r);
// eye whites
x = 825
fill(255);
rect(200, 250, 150, 200);
rect(200+x, 250, 150, 200);
bezier(200, 450, 200, 600, 350, 600, 350, 450);
bezier(200+x, 450, 200+x, 600, 350+x, 600, 350+x, 450);
// eyes
noFill();
stroke (0);
strokeWeight (10);
line(200, 250, 200, 450);
line(350, 250, 350, 450);
bezier(200, 250, 200, 100, 350, 100, 350, 250);
bezier(200, 450, 200, 600, 350, 600, 350, 450);
line(200+x, 250, 200+x, 450);
line(350+x, 250, 350+x, 450);
bezier(200+x, 250, 200+x, 100, 350+x, 100, 350+x, 250);
bezier(200+x, 450, 200+x, 600, 350+x, 600, 350+x, 450);
// eye colors
stroke(0);
fill(242, 246, 197);
bezier(185, 575, 200, 525, 350, 525, 365, 575);
bezier(185+x, 575, 200+x, 525, 350+x, 525, 365+x, 575);
// pupil
fill(0);
ellipse(240, 325, 80, 110);
ellipse(240, 410, 80, 110);
ellipse(310+x, 325, 80, 110);
ellipse(310+x, 410, 80, 110);
// eyelid colors
noStroke();
fill(242, 246, 197);
rect(195, 250, 160, 40);
rect(195+x, 250, 160, 40);
stroke(0);
bezier(195, 250, 195, 100, 355, 100, 355, 250);
bezier(195+x, 250, 195+x, 100, 355+x, 100, 355+x, 250);
// eyelids
stroke(0);
line(195, 290, 355, 290);
line(195, 250, 195, 290);
line(355, 250, 355, 290);
noFill();
line(195+x, 290, 355+x, 290);
line(195+x, 250, 195+x, 290);
line(355+x, 250, 355+x, 290);
// eyebrows
fill(0);
rect(125, 130, 300, 80, 40, 40, 40, 40);
rect(125+x, 130, 300, 80, 40, 40, 40, 40);
// nose
fill(242, 246, 197);
bezier(700, 525, 850, 505, 850, 630, 700, 610);
// lip colors
fill(255, 64, 64);
noStroke();
bezier(275, 700, 150, 700, 150, 850, 275, 850);
bezier(275+x, 700, 400+x, 700, 400+x, 850, 275+x, 850);
rect(275, 700, 825, 150);
// mouth
stroke(0);
line(275, 700, 275+x, 700);
line(275, 775, 275+x, 775);
line(275, 850, 275+x, 850);
noFill();
bezier(275, 700, 150, 700, 150, 850, 275, 850);
bezier(275+x, 700, 400+x, 700, 400+x, 850, 275+x, 850);
}