/* * PROG14998: INTRODUCTION TO MEDIA COMPUTING * FALL 2018, PROF: NICOLAS HESLER * * BY TING PEI CHEN (ZOE) * * ABOUT: * An emoticon of great potential and caliber, * inhibiting our still inability to escape the * circumstance of a 400px by 400px canvas, and * perhaps never will be any bigger than this. * */ void setup() { /* SETUP */ //canvas is 400px*400px size(400, 400); //no cursor noCursor(); } void keyPressed() { //open mouth frameRate(3); stroke(255-(mouseY/1.57), 0, 0); fill(255-(mouseY/1.57), 0, 0); arc(200+(mouseX/40), 200+(mouseY/40), 140, 140, QUARTER_PI, HALF_PI+QUARTER_PI); noStroke(); } void mousePressed() { //set low framerate frameRate(5); //alpha shifts low and high stroke(255, 225, 100, millis() % 120); //lightning strokeWeight(4); //left line(60+((20/9)*mouseY), 60+(10*sin(0.7+frameCount*0.04)), 40+((20/9)*mouseY), 80+(10*sin(0.7+frameCount*0.04))); line(40+((20/9)*mouseY), 80+(10*sin(0.7+frameCount*0.04)), 60+((20/9)*mouseY), 100+(10*sin(0.7+frameCount*0.04))); line(60+((20/9)*mouseY), 100+(10*sin(0.7+frameCount*0.04)), 20+((20/9)*mouseY), 120+(10*sin(0.7+frameCount*0.04))); line(40+((20/9)*mouseY), 110+(10*sin(0.7+frameCount*0.04)), 60+((20/9)*mouseY), 120+(10*sin(0.7+frameCount*0.04))); line(60+((20/9)*mouseY), 120+(10*sin(0.7+frameCount*0.04)), 50+((20/9)*mouseY), 140+(10*sin(0.7+frameCount*0.04))); //center line(240+((20/9)*mouseY), 60+(10*sin(1+frameCount*0.04)), 220+((20/9)*mouseY), 80+(10*sin(1+frameCount*0.04))); line(220+((20/9)*mouseY), 80+(10*sin(1+frameCount*0.04)), 210+((20/9)*mouseY), 100+(10*sin(1+frameCount*0.04))); line(210+((20/9)*mouseY), 100+(10*sin(1+frameCount*0.04)), 230+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04))); line(230+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04)), 220+((20/9)*mouseY), 160+(10*sin(1+frameCount*0.04))); line(220+((20/9)*mouseY), 160+(10*sin(1+frameCount*0.04)), 260+((20/9)*mouseY), 220+(10*sin(1+frameCount*0.04))); line(260+((20/9)*mouseY), 220+(10*sin(1+frameCount*0.04)), 300+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04))); line(300+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04)), 310+((20/9)*mouseY), 260+(10*sin(1+frameCount*0.04))); line(260+((20/9)*mouseY), 220+(10*sin(1+frameCount*0.04)), 280+((20/9)*mouseY), 260+(10*sin(1+frameCount*0.04))); line(280+((20/9)*mouseY), 260+(10*sin(1+frameCount*0.04)), 270+((20/9)*mouseY), 280+(10*sin(1+frameCount*0.04))); line(210+((20/9)*mouseY), 100+(10*sin(1+frameCount*0.04)), 190+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04))); line(190+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04)), 180+((20/9)*mouseY), 140+(10*sin(1+frameCount*0.04))); line(180+((20/9)*mouseY), 140+(10*sin(1+frameCount*0.04)), 140+((20/9)*mouseY), 180+(10*sin(1+frameCount*0.04))); line(140+((20/9)*mouseY), 180+(10*sin(1+frameCount*0.04)), 120+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04))); line(120+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04)), 60+((20/9)*mouseY), 300+(10*sin(1+frameCount*0.04))); line(80+((20/9)*mouseY), 280+(10*sin(1+frameCount*0.04)), 90+((20/9)*mouseY), 310+(10*sin(1+frameCount*0.04))); line(90+((20/9)*mouseY), 310+(10*sin(1+frameCount*0.04)), 80+((20/9)*mouseY), 340+(10*sin(1+frameCount*0.04))); //right line(360+((20/9)*mouseY), 60+(10*sin(1.5+frameCount*0.04)), 340+((20/9)*mouseY), 100+(10*sin(1.5+frameCount*0.04))); line(340+((20/9)*mouseY), 100+(10*sin(1.5+frameCount*0.04)), 360+((20/9)*mouseY), 120+(10*sin(1.5+frameCount*0.04))); line(350+((20/9)*mouseY), 80+(10*sin(1.5+frameCount*0.04)), 380+((20/9)*mouseY), 100+(10*sin(1.5+frameCount*0.04))); line(360+((20/9)*mouseY), 120+(10*sin(1.5+frameCount*0.04)), 340+((20/9)*mouseY), 140+(10*sin(1.5+frameCount*0.04))); //lightning glow strokeWeight(10); //alpha shifts low and high stroke(100, 225, 255, millis() % 65); //left line(60+((20/9)*mouseY), 60+(10*sin(0.7+frameCount*0.04)), 40+((20/9)*mouseY), 80+(10*sin(0.7+frameCount*0.04))); line(40+((20/9)*mouseY), 80+(10*sin(0.7+frameCount*0.04)), 60+((20/9)*mouseY), 100+(10*sin(0.7+frameCount*0.04))); line(60+((20/9)*mouseY), 100+(10*sin(0.7+frameCount*0.04)), 20+((20/9)*mouseY), 120+(10*sin(0.7+frameCount*0.04))); line(40+((20/9)*mouseY), 110+(10*sin(0.7+frameCount*0.04)), 60+((20/9)*mouseY), 120+(10*sin(0.7+frameCount*0.04))); line(60+((20/9)*mouseY), 120+(10*sin(0.7+frameCount*0.04)), 50+((20/9)*mouseY), 140+(10*sin(0.7+frameCount*0.04))); //center line(240+((20/9)*mouseY), 60+(10*sin(1+frameCount*0.04)), 220+((20/9)*mouseY), 80+(10*sin(1+frameCount*0.04))); line(220+((20/9)*mouseY), 80+(10*sin(1+frameCount*0.04)), 210+((20/9)*mouseY), 100+(10*sin(1+frameCount*0.04))); line(210+((20/9)*mouseY), 100+(10*sin(1+frameCount*0.04)), 230+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04))); line(230+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04)), 220+((20/9)*mouseY), 160+(10*sin(1+frameCount*0.04))); line(220+((20/9)*mouseY), 160+(10*sin(1+frameCount*0.04)), 260+((20/9)*mouseY), 220+(10*sin(1+frameCount*0.04))); line(260+((20/9)*mouseY), 220+(10*sin(1+frameCount*0.04)), 300+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04))); line(300+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04)), 310+((20/9)*mouseY), 260+(10*sin(1+frameCount*0.04))); line(260+((20/9)*mouseY), 220+(10*sin(1+frameCount*0.04)), 280+((20/9)*mouseY), 260+(10*sin(1+frameCount*0.04))); line(280+((20/9)*mouseY), 260+(10*sin(1+frameCount*0.04)), 270+((20/9)*mouseY), 280+(10*sin(1+frameCount*0.04))); line(210+((20/9)*mouseY), 100+(10*sin(1+frameCount*0.04)), 190+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04))); line(190+((20/9)*mouseY), 120+(10*sin(1+frameCount*0.04)), 180+((20/9)*mouseY), 140+(10*sin(1+frameCount*0.04))); line(180+((20/9)*mouseY), 140+(10*sin(1+frameCount*0.04)), 140+((20/9)*mouseY), 180+(10*sin(1+frameCount*0.04))); line(140+((20/9)*mouseY), 180+(10*sin(1+frameCount*0.04)), 120+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04))); line(120+((20/9)*mouseY), 240+(10*sin(1+frameCount*0.04)), 60+((20/9)*mouseY), 300+(10*sin(1+frameCount*0.04))); line(80+((20/9)*mouseY), 280+(10*sin(1+frameCount*0.04)), 90+((20/9)*mouseY), 310+(10*sin(1+frameCount*0.04))); line(90+((20/9)*mouseY), 310+(10*sin(1+frameCount*0.04)), 80+((20/9)*mouseY), 340+(10*sin(1+frameCount*0.04))); //right line(360+((20/9)*mouseY), 60+(10*sin(1.5+frameCount*0.04)), 340+((20/9)*mouseY), 100+(10*sin(1.5+frameCount*0.04))); line(340+((20/9)*mouseY), 100+(10*sin(1.5+frameCount*0.04)), 360+((20/9)*mouseY), 120+(10*sin(1.5+frameCount*0.04))); line(350+((20/9)*mouseY), 80+(10*sin(1.5+frameCount*0.04)), 380+((20/9)*mouseY), 100+(10*sin(1.5+frameCount*0.04))); line(360+((20/9)*mouseY), 120+(10*sin(1.5+frameCount*0.04)), 340+((20/9)*mouseY), 140+(10*sin(1.5+frameCount*0.04))); //end noStroke(); } void draw() { //set stroke weight strokeWeight(7); //make sure framerate is 60 frameRate(60); //background background(45+mouseY/20, 45+mouseY/45, 50+mouseY/45); //will shift from dark to light fill(225, 125, 25, 10); //gradient shading fill //top gradient rect(0, 0, 400, 40-10*cos(frameCount*0.04)); rect(0, 0, 400, 80-10*cos(0.5+frameCount*0.04)); rect(0, 0, 400, 120-10*cos(1+frameCount*0.04)); rect(0, 0, 400, 160-10*cos(1.5+frameCount*0.04)); //bottom gradient rect(0, 360-10*sin(frameCount*0.04), 400, 40+10*sin(frameCount*0.04)); rect(0, 320-10*sin(0.5+frameCount*0.04), 400, 80+10*sin(0.5+frameCount*0.04)); rect(0, 280-10*sin(1+frameCount*0.04), 400, 120+10*sin(1+frameCount*0.04)); rect(0, 240-10*sin(1.5+frameCount*0.04), 400, 160+10*sin(1.5+frameCount*0.04)); /* SUN */ //center fill(225, 140, 100); ellipse(320+(25*sin(mouseY*0.011)), 500-mouseY, 50, 50); //glow fill(255, 180, 100, 25); ellipse(320+(25*sin(mouseY*0.011)), 500-mouseY, 70+(4*sin(frameCount*0.04)), 70+(4*sin(frameCount*0.04))); ellipse(320+(25*sin(mouseY*0.011)), 500-mouseY, 60+(4*sin(0.5+frameCount*0.04)), 60+(4*sin(0.5+frameCount*0.04))); ellipse(320+(25*sin(mouseY*0.011)), 500-mouseY, 80+(4*sin(1+frameCount*0.04)), 80+(4*sin(1+frameCount*0.04))); ellipse(320+(25*sin(mouseY*0.011)), 500-mouseY, 110+(4*sin(1.5+frameCount*0.04)), 110+(4*sin(1.5+frameCount*0.04))); ellipse(320+(25*sin(mouseY*0.011)), 500-mouseY, 140+(4*sin(2+frameCount*0.04)), 140+(4*sin(2+frameCount*0.04))); /* RED AURA */ //left fill(150, 25, 20, 25+(15*sin(frameCount*0.04))); ellipse(0, 420+mouseY, 300+(4*sin(frameCount*0.04)), 300+(4*sin(frameCount*0.04))); ellipse(0, 420+mouseY, 320+(4*sin(0.5+frameCount*0.04)), 320+(4*sin(0.5+frameCount*0.04))); ellipse(0, 420+mouseY, 340+(4*sin(1+frameCount*0.04)), 340+(4*sin(1+frameCount*0.04))); //right ellipse(400, 420+mouseY, 300+(4*sin(frameCount*0.04)), 300+(4*sin(frameCount*0.04))); ellipse(400, 420+mouseY, 320+(4*sin(0.5+frameCount*0.04)), 320+(4*sin(0.5+frameCount*0.04))); ellipse(400, 420+mouseY, 340+(4*sin(1+frameCount*0.04)), 340+(4*sin(1+frameCount*0.04))); //center ellipse(200, 420+mouseY, 200+(4*sin(frameCount*0.04)), 200+(4*sin(frameCount*0.04))); ellipse(200, 420+mouseY, 220+(4*sin(0.5+frameCount*0.04)), 220+(4*sin(0.5+frameCount*0.04))); ellipse(200, 420+mouseY, 240+(4*sin(1+frameCount*0.04)), 240+(4*sin(1+frameCount*0.04))); /*FACE*/ //eyeglow fill(255, 60, 0, 40-(mouseY/1.57)); ellipse(80+((mouseX+65)/10), 160+((mouseY-45)/20), 50+5*sin(frameCount*0.04), 50+5*sin(frameCount*0.04)); //left ellipse(260+((mouseX+65)/10), 160+((mouseY-45)/20), 50+5*sin(frameCount*0.04), 50+5*sin(frameCount*0.04)); //right ellipse(80+((mouseX+65)/10), 160+((mouseY-45)/20), 40+5*sin(0.5+frameCount*0.04), 40+5*sin(0.5+frameCount*0.04)); //left ellipse(260+((mouseX+65)/10), 160+((mouseY-45)/20), 40+5*sin(0.5+frameCount*0.04), 40+5*sin(0.5+frameCount*0.04)); //right noFill(); //eyes stroke(255-(mouseY/1.57), 120-(mouseY/20), 45+(mouseY/25)); ellipse(80+((mouseX+65)/10), 160+((mouseY-45)/20), 25, 25); //left ellipse(260+((mouseX+65)/10), 160+((mouseY-45)/20), 25, 25); //right //mouth arc(200+(mouseX/40), 200+(mouseY/40), 140, 140, QUARTER_PI, HALF_PI+QUARTER_PI); //eyebrows arc(100+(mouseX/26.67), 200+(mouseY/40), 120, 120, PI+QUARTER_PI, PI+HALF_PI+QUARTER_PI); //left arc(280+(mouseX/26.67), 200+(mouseY/40), 120, 120, PI+QUARTER_PI, PI+HALF_PI+QUARTER_PI); //right //cheeks arc(120+(mouseX/40), 200+(mouseY/40), 200, 200, HALF_PI+QUARTER_PI, PI+QUARTER_PI); //left arc(280+(mouseX/40), 200+(mouseY/40), 200, 200, PI+HALF_PI+QUARTER_PI, TWO_PI+QUARTER_PI); //right //nose line(200+(mouseX/26.67), 160+(mouseY/26.67), 200+(mouseX/26.67), 200+(mouseY/26.67)); //the bridge ellipse(200+(mouseX/26.67), 220+(mouseY/26.67), 40, 40); //the smell sponge fill(45+mouseY/20, 45+mouseY/45, 50+mouseY/45); stroke(45+mouseY/20, 45+mouseY/45, 50+mouseY/45); rect(170+(mouseX/26.67), 190+(mouseY/26.67), 23, 30); //the sponge block /*CLOUDS*/ noStroke(); //bottom layer fill(35, 35, 45, 255-mouseY/4); ellipse(((20/9)*mouseY)+60, -20+(10*sin(0.7+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+340, 420-(10*sin(2.2+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+180, -20+(10*sin(1.2+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+220, 420-(10*sin(1.7+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+300, -20+(10*sin(1.7+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+100, 420-(10*sin(1.2+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+420, -20+(10*sin(2.2+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)-20, 420-(10*sin(0.7+frameCount*0.04)), 160, 160); //middle layer fill(25, 25, 35, 255-mouseY/4); ellipse(((20/9)*mouseY), -20+(10*sin(frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+400, 420-(8*sin(1.5+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+120, -20+(10*sin(0.5+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+280, 420-(8*sin(1+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+240, -20+(10*sin(1+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+160, 420-(8*sin(0.5+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+360, -20+(10*sin(1.5+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+40, 420-(8*sin(frameCount*0.04)), 160, 160); //top layer fill(15, 15, 25, 255-mouseY/4); ellipse(((20/9)*mouseY)+60, -40+(10*sin(frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+400, 440-(7*sin(1.5+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+180, -40+(10*sin(0.5+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+280, 440-(7*sin(1+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+300, -40+(10*sin(1+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+160, 440-(7*sin(0.5+frameCount*0.04)), 160, 160); ellipse(((20/9)*mouseY)+420, -40+(10*sin(1.5+frameCount*0.04)), 160, 160); ellipse(((-20/9)*mouseY)+40, 440-(7*sin(frameCount*0.04)), 160, 160); }