For the selfie assignment, I didn’t draw pictures that are similar to my face. Rather, I have drawn some simplified facial expressions that best describe my mood in a day. For each facial expression, I used some basic functions we learned in class. Here are some samples of the simplified selfies.
My program is cyclic, meaning that it repeats the expressions every minute. I used the function second() to sync my program with the clock of my computer. The first 30 seconds are set at night while the rest of the minute is set to daytime. The frame is always divided into two parts: the upper half representing the sky and the lower half containing the facial expressions. My code is attached below.
//variable for x & y pos of sun float xPos; float yPos; //speed of sun on each axis float xSpeed = 0.5; float ySpeed = 0.5; int i = 0; void setup() { size(700, 700); } void draw() { int s = second(); // Values from 0 - 59 println("s:", s); //NIGHT if (s < 30) { //draw night background noStroke(); fill(0); rect(0, 0, width, height); //draw moon fill(#F3F711); arc(600, 70, 50, 50, -1.05, 2.09); //draw stars for (int i = 0; i < 50; i += 1) { fill(#F3F711); ellipse(random(50, 650), random(30, 400), 4, 4); delay(20); } if (s < 10) { //sleeping face if (s % 2 == 0) { println("Even"); //sleep 1 stroke(255); strokeWeight(6); line(150, 500, 250, 500); line(300, 500, 400, 500); fill(255); ellipse(275, 550, 10, 10); line(450, 530, 470, 530); line(470, 530, 450, 550); line(450, 550, 470, 550); line(520, 500, 560, 500); line(560, 500, 520, 540); line(520, 540, 560, 540); } if (s % 2 != 0) { println("Odd"); //sleep 2 stroke(255); strokeWeight(6); line(150, 500, 250, 500); line(300, 500, 400, 500); noFill(); ellipse(275, 550, 40, 40); } } if (s>=10 && s<15) { //shock face noFill(); stroke(255); strokeWeight(6); ellipse(200, 480, 50, 50); ellipse(320, 480, 50, 50); ellipse(260, 560, 70, 70); //clock strokeWeight(4); ellipse(550, 480, 120, 120); line(550, 480, 520, 525); } if (s>=15 && s<22) { //angry face noFill(); stroke(255); strokeWeight(3); line(130, 500, 130, 530);// zuo shang line(115, 530, 130, 530); line(140, 500, 140, 530);// you shang line(140, 530, 155, 530); line(115, 540, 130, 540);// zuo xia line(130, 540, 130, 570); line(140, 540, 140, 570);// you xia line(140, 540, 155, 540); strokeWeight(7); line(170, 505, 250, 505);//left eye line(300, 505, 380, 505);//right eye strokeWeight(3); line(255, 525, 295, 525);//mouth line(255, 525, 255, 555); line(295, 525, 295, 555); line(268, 525, 268, 555); line(282, 525, 282, 555); line(250, 555, 300, 555); //clock strokeWeight(4); ellipse(550, 480, 120, 120); line(550, 480, 520, 525); } if (s>= 22 && s<30) { //crying face noFill(); stroke(255); strokeWeight(6); line(150, 500, 250, 500);//left eye line(175, 500, 175, 540); line(225, 500, 225, 540); line(320, 500, 420, 500);//right eye line(345, 500, 345, 540); line(395, 500, 395, 540); line(230, 560, 340, 560); //clock strokeWeight(4); ellipse(550, 480, 120, 120); line(550, 480, 520, 525); } } //DAYTIME if (s >= 30) { //draw day background noStroke(); fill(255); rect(0, 0, width, height); //draw sky fill(135, 206, 250); rect(0, 0, width, height/2); //draw moving sun xPos = i; if (xPos < width/2) { yPos = width/2 - xPos; } if (xPos>=width/2) { yPos = xPos - width/2; } float diam = 40; fill(255, 0, 0); ellipse(xPos, yPos, diam, diam); delay(35); println("Sun"); xPos += xSpeed; yPos += ySpeed; i += 1; if (i>700) { i=0; } //draw dots for (int i = 0; i < 50; i += 1) { fill(255); ellipse(random(50, 680), random(30, 340), 4, 4); } if (s >=30 && s < 40) { //stretch face 1 stroke(0); strokeWeight(6); noFill(); ellipse(200, 500, 60, 60);//left eye fill(0); ellipse(200, 500, 10, 10); noFill(); ellipse(400, 500, 60, 60);//right eye fill(0); ellipse(400, 500, 10, 10); line(266, 530, 334, 530);//mouth line(150, 550, 120, 510);//left hand line(450, 550, 480, 510);//right hand //clock noFill(); strokeWeight(4); ellipse(550, 480, 120, 120); line(550, 480, 495, 480); } if (s>=40 && s<50) { //studying face stroke(0); strokeWeight(6); noFill(); ellipse(200, 500, 50, 50);//left eye line(190, 500, 210, 500); ellipse(400, 500, 50, 50);//right eye line(390, 500, 410, 500); line(260, 490, 340, 490);//nose line(260, 490, 260, 525); line(340, 490, 340, 525); line(283, 490, 283, 525); line(317, 490, 317, 525); line(240, 525, 360, 525); line(180, 540, 270, 560);//left hand line(420, 540, 330, 560);//right hand //clock noFill(); strokeWeight(4); ellipse(550, 480, 120, 120); line(550, 480, 520, 435); } if (s>=50 && s<59) { //stretch face 2 strokeWeight(6); stroke(0); line(150, 500, 240, 500);//left eye line(330, 500, 420, 500);//right eye line(245, 510, 325, 510);//nose line(245, 510, 285, 570); line(325, 510, 285, 570); line(140, 550, 110, 520);//left hand line(440, 550, 470, 520);//right hand //clock noFill(); strokeWeight(4); ellipse(550, 480, 120, 120); line(550, 480, 580, 435); } if (s == 59) { background(0); } } }