For this “self portrait”, I mainly just tried to add face features and use the right colors for them, but I wasn’t able to actually draw it the way it actually looks since that was a hard. The one additional aspect I added was that the eyes sort of blinks after a few seconds. This was achieved by modulating the frameCount and whenever the value is between 0 and 50, the eyes will not show, therefore, creating the visual effect of blinking. This project just involved a lot of trial and error for placing shapes and it was a great learning experience. I think the arcs are still a bit confusing but after remembering middle school math, I think I’ve gotten the hang of it.
void setup() {
size(460, 500);
frameRate(30);
}
void draw() {
noStroke();
background(104, 193, 200);
fill(0);
rectMode(CENTER);
rect(width/2, height/2 + 30, 270, 300);
//shirt
fill(17, 103, 168);
ellipse(width/2, height/2 + 285, 280, 300);
//face and neck
fill(239, 198, 107);
ellipse(width/2, height/2 - 30, 250, 300);
rect(width/2, height/2 + 130, 50, 50);
arc(width/2, height/2 + 140, 90, 50, 0, PI);
//eyes
if (frameCount % 50 > 0 && frameCount % 50 < 50) {
noStroke();
fill(255);
ellipse(width/2 - 55, height/2 - 50, 50, 20);
ellipse(width/2 + 55, height/2 - 50, 50, 20);
fill(102, 82, 34);
ellipse(width/2 - 55, height/2 - 50, 20, 20);
ellipse(width/2 + 55, height/2 - 50, 20, 20);
} else {
noFill();
arc(width/2 - 55, height/2 - 70, 50, 10, 0, PI);
arc(width/2 + 55, height/2 - 70, 50, 10, 0, PI);
}
//nose, arm line
stroke(0);
line(width/2, height/2, width/2, height/2 - 35);
line(width/2 + 80, height/2 + 250, width/2 + 80, height/2 + 180);
line(width/2 - 80, height/2 + 250, width/2 - 80, height/2 + 180);
//eyebrow
noFill();
arc(width/2 - 55, height/2 - 70, 50, 10, PI, TWO_PI);
arc(width/2 + 55, height/2 - 70, 50, 10, PI, TWO_PI);
//mouth
fill(0);
arc(width/2, height/2 + 40, 100, 70, 0, PI);
arc(width/2, height/2 -100, 270, 230, PI, TWO_PI);
fill(229, 87, 87);
arc(width/2, height/2 + 59, 80, 30, 0, PI);
}
