# Face – Charlotte

The Code:

```int[] x = {297, 297, 293, 330, 337, 342, 345, 335, 362, 379, 373, 362, 346, 342, 346, 333, 339, 335, 317, 315, 288, 216, 175, 150, 170, 150};
int[] y = {-6, -6, -5, 52, 91, 118, 143, 165, 203, 232, 253, 258, 262, 279, 299, 314, 331, 341, 352, 375, 400, 390, 408, 442, 500, 579};
color lerpC,lerpD,lerpE;
void setup(){
size(500,500);

}

void draw(){
//circles inside of head
fill(0);
rect(0,0,width,height);
fill(255,10);
stroke(255);
for (int c=0;c<width*2;c+=20) {
ellipse(10*((sin(.55-c))), 10*((cos(.55-c))), c, c);
}

translate(-100,0);
//profile
beginShape();
noFill();
fill(0);
curveVertex(600, -14);
curveVertex(600, -13);
curveVertex(327, -10);
for (int i = 0; i < x.length - 1; i++) {
strokeWeight(5);
stroke(0);
curveVertex(x[i], y[i]);

}
curveVertex(637, 598);
curveVertex(670, 452);
endShape();

for(int j=0; j<x.length-1; j++) {
strokeWeight(1);
color c1 = color(255,177,122);
color c2 = color(144,122,255);
lerpC= lerpColor(c1,c2,.33);
lerpD= lerpColor(c1,c2,.66);

stroke(lerpC);
fill(lerpC);
randomSeed(0);
rect(x[j] + 20, y[j] * 1.2-50,3,3);
rect(x[j] + random(-5,30), y[j]+ random(-3,3),3,3);

stroke(c1);
fill(c1);
ellipse(x[j] + random(-8,20), y[j]+ random(0,1),3,3);
ellipse(x[j] + random(-6,30), y[j]+ random(-5,5),3,3);

stroke(lerpD);
fill(lerpD);
float tX = x[j]+(random(39,50));
float tY = y[j]+(random(-2,2));
triangle(tX,tY,tX+random(3,4),tY+random(-2,2),tX+(random(0,3)),tY+random(2));

stroke(c2);
point(x[j] + random(50,100), y[j]+ random(-4,60));
point(x[j] + random(50,100), y[j]+ random(-13,4));
point(x[j] + random(44,150), y[j]+ random(-10,10));
point(x[j] + random(60,100), y[j]+ random(-4,4));
}
}
```

# Self-Portrait

```void setup(){
size(400, 600);
}

void draw(){
background(0,77,153);
strokeWeight(4);
stroke(0);

//ears
fill(255,218,185);
ellipse(100,322,27,45);
ellipse(300,322,27,45);

//face
fill(255,218,185);
beginShape();
curveVertex(270,250);
curveVertex(130,250);
curveVertex(100,300);
curveVertex(120,380);
curveVertex(200,420);
curveVertex(280,380);
curveVertex(300,300);
curveVertex(270,250);
curveVertex(130,250);
endShape();

//hair
fill(139,69,19);
ellipse(200,180,80,80);
arc(200,290,210,180,PI,TWO_PI);
noStroke();
quad(94,290, 135,290, 130,310, 90,310);
quad(135,290, 140,310, 170,310, 175,290);
quad(175,290, 182,310, 230,310, 236,290);
quad(236,290, 245,310, 275,310, 270,290);
quad(270,290, 280,310, 310,310, 306,290);
stroke(0);
strokeWeight(4);
line(94,290, 90,310);
line(135,290, 130,310);
line(130,310, 90,310);
line(135,290, 140,310);
line(140,310, 170,310);
line(170,310, 175,290);
line(175,290, 182,310);
line(182,310, 230,310);
line(230,310, 236,290);
line(236,290, 245,310);
line(245,310, 275,310);
line(275,310, 270,290);
line(270,290, 280,310);
line(280,310, 310,310);
line(310,310, 306,290);

//ribon
fill(255,215,0);
triangle(200,200, 130,170, 130,230);
triangle(200,200, 270,170, 270,230);
ellipse(200,200,30,30);

//eyes
fill(255);
arc(150,340,40,30,PI,TWO_PI,CHORD);
arc(250,340,40,30,PI,TWO_PI,CHORD);
fill(0);
noStroke();
ellipse(250,331,14,14);
ellipse(150,331,14,14);
fill(255);
ellipse(245,329,5,5);
ellipse(145,329,5,5);
//ellipse(252,330,8,8);
//ellipse(152,330,8,8);

//mouth
stroke(0);
strokeWeight(4);
fill(255);
arc(200,372,65,45,0,PI,CHORD);
strokeWeight(2);
line(176,372, 176,384);
line(187,372, 187,390);
line(200,372, 200,395);
line(213,372, 213,390);
line(224,372, 224,384);

}
```

# Programing the Self

Full Disclosure: I went for a minimalistic approach because I got incredibly frustrated with using beginShape(), endShape(), and curveVertex() to get the exact shapes I wanted. This is also why the sketch has no eyes.
sketch.js code