Reflection
Since the basic elements in this portrait are restricted to simple geometric shapes, I decided to create a minimalistic portrait. The blue and yellow used in the portrait are selected from photos of minerals online.
Also, I stumbled across the code for generating random points automatically, so I decided to create a shimmering effect with it.
function setup() {
createCanvas(500, 600);
}
function draw() {
background(0);
quad(100,100,150,150,100,150,150,100);
var bg1 = color(221,159,35);
fill(bg1);
noStroke();
rect(0,50,500,80);
rect(0,180,500,30);
var ri = color(27,102,205);
var bg2 = color(200,81,35);
fill(ri);
noStroke();
rect(0,450,500,45);
rect(0,500,500,100);
var skinlt = color(252,252,244);
fill(skinlt);
stroke(252,252,244);
triangle(100,0,50,100,250,450);
triangle(100,0,250,450,400,0);
triangle(400,0,250,450,450,100);
//cheek triangles
triangle(70,110,110,350,250,450);
triangle(430,110,250,450,390,350);
fill(50);
noStroke();
ellipse(250,125,410,410);
fill(skinlt);
noStroke();
ellipse(250,200,350,350);
var lip = color(174,41,30);
fill(lip);
noStroke();
ellipse(250,350,30,30);
ellipse(250,320,40,40);
var skindk = color(252,240,224);
fill(skindk);
stroke(skindk);
quad(250,450,170,393,170,530,250,530);
quad(250,450,330,393,330,530,250,530);
ellipse(250,530,160,160);
var ri = color(27,102,205);
fill(ri);
stroke(255);
strokeWeight(5);
ellipse(85,300,50,50);
ellipse(415,300,50,50);
stroke(50);
strokeWeight(3);
noFill();
curve(5,26,200,30,400,250,50,100);
curve(5,26,200,20,400,175,50,100);
fill(0);
noStroke();
triangle(0,515,0,450,170,450);
triangle(500,515,500,450,330,450);
noFill();
stroke(50);
strokeWeight(10);
arc(170,220,60,60,0,PI);
arc(330,220,60,60,0,PI);
stroke(80);
strokeWeight(5);
line(130,170,200,170);
line(370,170,300,170);
fill(250);
stroke(251,191,46);
ellipse(85,random(330,430),10,10);
ellipse(85,random(330,430),10,10);
ellipse(85,random(330,430),10,10);
ellipse(85,random(330,430),10,10);
ellipse(85,random(330,430),10,10);
ellipse(85,random(330,430),10,10);
ellipse(85,random(330,430),10,10);
ellipse(85,random(330,430),10,10);
ellipse(415,random(330,450),10,10);
ellipse(415,random(330,450),10,10);
ellipse(415,random(330,450),10,10);
ellipse(415,random(330,450),10,10);
ellipse(415,random(330,450),10,10);
ellipse(415,random(330,450),10,10);
ellipse(415,random(330,450),10,10);
ellipse(415,random(330,450),10,10);
}