Since the self-portrait needs a lot of different shapes other than the given functions such as rect() or ellipse(), I have played around with the beginShape() and endShape(), utilizing vertex and curveVertex to formulate the curves. I have also tried to use the rotate() function, but since the rotate() function rotates the art board and not the configured shape, I was stuck on creating figures using the built-in vertex functions. The image below is the self-portrait I have created following with the source code on Processing.
color backgroundColor = color(0,132,255);
color black = color(0, 0, 0);
color skin = color(255, 219, 172);
color skinDark = color(241,194,125);
int unit = 72;
void setup() {
size(720, 720);
}
void draw() {
background(backgroundColor);
noStroke();
strokeWeight(1);
// *NECK
fill(skinDark);
rect(unit*4, unit*6, unit*2, unit*1);
// *FACE
fill(skin);
arc(unit*5, unit*3, unit*4, unit*7, 0, PI);
// *UPPERHEAD
fill(skin);
arc(unit*5, unit*3, unit*4, unit*4, PI, TWO_PI);
//*HAIR
fill(0);
beginShape();
curveVertex(unit*4, unit*2);
curveVertex(unit*4, unit*2);
curveVertex(unit*3.8, unit*2.8);
curveVertex(unit*3, unit*3);
curveVertex(unit*3, unit*3);
endShape();
beginShape();
curveVertex(unit*4, unit*2);
curveVertex(unit*4, unit*2);
curveVertex(unit*5, unit*3);
curveVertex(unit*7, unit*3);
curveVertex(unit*7, unit*3);
endShape();
beginShape();
curveVertex(unit*3, unit*3);
curveVertex(unit*3, unit*3);
curveVertex(unit*3.2, unit*1.3);
curveVertex(unit*5.05, unit*1);
curveVertex(unit*5.05, unit*1);
endShape();
beginShape();
curveVertex(unit*3.4, unit*1.85);
curveVertex(unit*3.4, unit*1.85);
curveVertex(unit*5.5, unit*0.6);
curveVertex(unit*6.8, unit*1.5);
curveVertex(unit*7, unit*3);
curveVertex(unit*7, unit*3);
endShape();
// *EYEBROW_LEFT
beginShape();
vertex(unit*3.5, unit*3.25);
vertex(unit*4.5, unit*3.25);
vertex(unit*4.5, unit*3.4);
vertex(unit*3.5, unit*3.4);
endShape();
// *EYEBROW_RIGHT
beginShape();
vertex(unit*5.5, unit*3.25);
vertex(unit*6.5, unit*3.25);
vertex(unit*6.5, unit*3.4);
vertex(unit*5.5, unit*3.4);
endShape();
// *EYE_LEFT
stroke(0);
strokeWeight(3);
fill(skin);
arc(unit*4, unit*3.9, unit, unit*0.2, PI+0.5, TWO_PI);
// *EYE_RIGHT
arc(unit*6, unit*3.9, unit, unit*0.2, PI, TWO_PI-0.5);
//*NOSE
beginShape();
curveVertex(unit*5, unit*4.1);
curveVertex(unit*5, unit*4.1);
curveVertex(unit*4.9, unit*4.7);
curveVertex(unit*4.5, unit*5.1);
curveVertex(unit*5, unit*5.2);
curveVertex(unit*5, unit*5.2);
endShape();
// *MOUTH
arc(unit*5, unit*5.2, unit*2, unit*1.5, 0.7, PI-0.7);
// *BODY
noStroke();
fill(50);
beginShape();
vertex(0, unit*10);
vertex(0, unit*8);
vertex(unit*4, unit*7);
vertex(unit*6, unit*7);
vertex(unit*10, unit*8);
vertex(unit*10, unit*10);
endShape();
}
