/* Tianyao Liu
* Interactive Drawing: Animated Pokemon Jirachi
* Intro to Media Computation
*
* Jirachi will look at your cursor as long as it isn't too close to the bottom, in which case it will start doing some trippy magic
*/
void setup() {
size(800, 800);
frameRate(30); //for animation
rectMode(CENTER);
}
void draw() {
colorMode(HSB, 360, 100, 100, 100); //HSB is much easier to use for the colour and lighting effects used in this drawing
//background
background(217, 100, 33, 100); //dark blue
//excluding background, every part's coordinates have position formulas
//horizontal parallax movement relative to mouseX: {+/-}(mouseX-400)/{reciprocal of parallax factor}
//vertical parallax movement relative to mouseY: {+/-}(mouseY-400)/{reciprocal of parallax factor}
//breathing movement for both x and y positions (period = (2*PI)/(PI/30) = 2*30 = 60; one breathing cycle every 60 frames, or 2 seconds): {+/-}{movement factor}*sin(PI/30*frameCount)
//similarly, this formula is used very often for other purposes such as rotation or pulsing animations, sometimes with modifications: {+/-}{factor}*sin(PI/{period/2}*frameCount)
//some instances of mouseX/mouseY will be replaced with pmouseX/pmouseY for a "trailing" effect
//star glow; translucent circles behind the stars that pulse continuously
noStroke();
fill(192, 50, 100, 50+25*sin(PI/30*frameCount-PI)); //blue with varying opacity
ellipse(20-(mouseX-400)/10, 300-(mouseY-400)/20, 60+6*sin(PI/30*frameCount), 60+6*sin(PI/30*frameCount));
ellipse(120-(mouseX-400)/10, 80-(mouseY-400)/20, 60+6*sin(PI/30*frameCount), 60+6*sin(PI/30*frameCount));
ellipse(560-(mouseX-400)/10, 660-(mouseY-400)/20, 60+6*sin(PI/30*frameCount), 60+6*sin(PI/30*frameCount));
ellipse(340-(mouseX-400)/10, 740-(mouseY-400)/20, 60+6*sin(PI/30*frameCount), 60+6*sin(PI/30*frameCount));
ellipse(500-(mouseX-400)/10, 40-(mouseY-400)/20, 30+3*sin(PI/30*frameCount), 30+3*sin(PI/30*frameCount));
ellipse(660-(mouseX-400)/10, 140-(mouseY-400)/20, 30+3*sin(PI/30*frameCount), 30+3*sin(PI/30*frameCount));
ellipse(800-(mouseX-400)/10, 520-(mouseY-400)/20, 30+3*sin(PI/30*frameCount), 30+3*sin(PI/30*frameCount));
ellipse(180-(mouseX-400)/10, 640-(mouseY-400)/20, 30+3*sin(PI/30*frameCount), 30+3*sin(PI/30*frameCount));
//the actual stars; each star is made of two quads, have a "shine" effect
fill(0, 0, 100, 100); //white
quad(20-(mouseX-400)/10, 260-(mouseY-400)/20-4*sin(PI/30*frameCount), 30-(mouseX-400)/10, 300-(mouseY-400)/20, 20-(mouseX-400)/10, 340-(mouseY-400)/20+4*sin(PI/30*frameCount), 10-(mouseX-400)/10, 300-(mouseY-400)/20);
quad(20-(mouseX-400)/10, 290-(mouseY-400)/20, 60-(mouseX-400)/10+4*sin(PI/30*frameCount), 300-(mouseY-400)/20, 20-(mouseX-400)/10, 310-(mouseY-400)/20, -20-(mouseX-400)/10-4*sin(PI/30*frameCount), 300-(mouseY-400)/20);
quad(120-(mouseX-400)/10, 40-(mouseY-400)/20-4*sin(PI/30*frameCount), 130-(mouseX-400)/10, 80-(mouseY-400)/20, 120-(mouseX-400)/10, 120-(mouseY-400)/20+4*sin(PI/30*frameCount), 110-(mouseX-400)/10, 80-(mouseY-400)/20);
quad(120-(mouseX-400)/10, 70-(mouseY-400)/20, 160-(mouseX-400)/10+4*sin(PI/30*frameCount), 80-(mouseY-400)/20, 120-(mouseX-400)/10, 90-(mouseY-400)/20, 80-(mouseX-400)/10-4*sin(PI/30*frameCount), 80-(mouseY-400)/20);
quad(560-(mouseX-400)/10, 620-(mouseY-400)/20-4*sin(PI/30*frameCount), 570-(mouseX-400)/10, 660-(mouseY-400)/20, 560-(mouseX-400)/10, 700-(mouseY-400)/20+4*sin(PI/30*frameCount), 550-(mouseX-400)/10, 660-(mouseY-400)/20);
quad(560-(mouseX-400)/10, 650-(mouseY-400)/20, 600-(mouseX-400)/10+4*sin(PI/30*frameCount), 660-(mouseY-400)/20, 560-(mouseX-400)/10, 670-(mouseY-400)/20, 520-(mouseX-400)/10-4*sin(PI/30*frameCount), 660-(mouseY-400)/20);
quad(340-(mouseX-400)/10, 700-(mouseY-400)/20-4*sin(PI/30*frameCount), 350-(mouseX-400)/10, 740-(mouseY-400)/20, 340-(mouseX-400)/10, 780-(mouseY-400)/20+4*sin(PI/30*frameCount), 330-(mouseX-400)/10, 740-(mouseY-400)/20);
quad(340-(mouseX-400)/10, 730-(mouseY-400)/20, 380-(mouseX-400)/10+4*sin(PI/30*frameCount), 740-(mouseY-400)/20, 340-(mouseX-400)/10, 750-(mouseY-400)/20, 300-(mouseX-400)/10-4*sin(PI/30*frameCount), 740-(mouseY-400)/20);
quad(500-(mouseX-400)/10, 20-(mouseY-400)/20-4*sin(PI/30*frameCount), 505-(mouseX-400)/10, 40-(mouseY-400)/20, 500-(mouseX-400)/10, 60-(mouseY-400)/20+4*sin(PI/30*frameCount), 495-(mouseX-400)/10, 40-(mouseY-400)/20);
quad(500-(mouseX-400)/10, 35-(mouseY-400)/20, 520-(mouseX-400)/10+4*sin(PI/30*frameCount), 40-(mouseY-400)/20, 500-(mouseX-400)/10, 45-(mouseY-400)/20, 480-(mouseX-400)/10-4*sin(PI/30*frameCount), 40-(mouseY-400)/20);
quad(660-(mouseX-400)/10, 120-(mouseY-400)/20-4*sin(PI/30*frameCount), 665-(mouseX-400)/10, 140-(mouseY-400)/20, 660-(mouseX-400)/10, 160-(mouseY-400)/20+4*sin(PI/30*frameCount), 655-(mouseX-400)/10, 140-(mouseY-400)/20);
quad(660-(mouseX-400)/10, 135-(mouseY-400)/20, 680-(mouseX-400)/10+4*sin(PI/30*frameCount), 140-(mouseY-400)/20, 660-(mouseX-400)/10, 145-(mouseY-400)/20, 640-(mouseX-400)/10-4*sin(PI/30*frameCount), 140-(mouseY-400)/20);
quad(800-(mouseX-400)/10, 500-(mouseY-400)/20-4*sin(PI/30*frameCount), 805-(mouseX-400)/10, 520-(mouseY-400)/20, 800-(mouseX-400)/10, 540-(mouseY-400)/20+4*sin(PI/30*frameCount), 795-(mouseX-400)/10, 520-(mouseY-400)/20);
quad(800-(mouseX-400)/10, 515-(mouseY-400)/20, 820-(mouseX-400)/10+4*sin(PI/30*frameCount), 520-(mouseY-400)/20, 800-(mouseX-400)/10, 525-(mouseY-400)/20, 780-(mouseX-400)/10-4*sin(PI/30*frameCount), 520-(mouseY-400)/20);
quad(180-(mouseX-400)/10, 620-(mouseY-400)/20-4*sin(PI/30*frameCount), 185-(mouseX-400)/10, 640-(mouseY-400)/20, 180-(mouseX-400)/10, 660-(mouseY-400)/20+4*sin(PI/30*frameCount), 175-(mouseX-400)/10, 640-(mouseY-400)/20);
quad(180-(mouseX-400)/10, 635-(mouseY-400)/20, 200-(mouseX-400)/10+4*sin(PI/30*frameCount), 640-(mouseY-400)/20, 180-(mouseX-400)/10, 645-(mouseY-400)/20, 160-(mouseX-400)/10-4*sin(PI/30*frameCount), 640-(mouseY-400)/20);
//trippy background; will only appear if mouseY > 600; appears over the night sky background and has translucent circles that pulse and spin, as well as one that follows the third eye and pulses violently
fill((frameCount*4)%360, 100, 40, (-600+mouseY)/2); //flashes rainbow colours
rect(400, 400, 800, 800);
fill(60, 50, 100, (-600+mouseY)/4); //yellow
ellipse(400+(mouseX-400)/20+50*cos(PI/90*frameCount), 400+(mouseY-400)/40+50*sin(PI/90*frameCount), 1000+150*sin(PI/30*frameCount), 1000+150*sin(PI/30*frameCount));
fill(180, 50, 100, (-600+mouseY)/4); //blue
ellipse(400+(mouseX-400)/20+50*cos(PI/45*frameCount*-1), 400+(mouseY-400)/40+50*sin(PI/45*frameCount*-1), 600+100*sin(PI/15*frameCount-HALF_PI), 600+100*sin(PI/15*frameCount-HALF_PI));
fill(0, 0, 100, (-600+mouseY)/4); //white
ellipse(400+(mouseX-400)/6.5, 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1), 300+50*sin(PI/3*frameCount-PI), 300+50*sin(PI/3*frameCount-PI));
//back glow; is always there unlike the other wacky effects, pulsing translucent circles behind Jirachi
fill(0, 0, 100, 12+6*sin(PI/30*frameCount)); //white with varying opacity
ellipse(400+(mouseX-400)/20, 400+(mouseY-400)/40, 600+50*sin(PI/30*frameCount-PI), 600+50*sin(PI/30*frameCount-PI));
ellipse(400+(mouseX-400)/20, 400+(mouseY-400)/40, 480+50*sin(PI/30*frameCount-PI), 480+50*sin(PI/30*frameCount-PI));
//All body parts have a breathing animation and move relative to the cursor; arranged and animated in a way such that illusion of depth is achieved
//streamer wing things; have "flowing in the wind" effect and trailing effect
strokeWeight(3);
stroke(50, 100, 100, 100); //yellow
fill(50, 50, 100, 100); //bright yellow
//right; relative to viewer
beginShape();
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(440+(pmouseX-400)/15+120*cos(-PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+120*sin(-PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(440+(pmouseX-400)/15+240*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+240*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(440+(pmouseX-400)/15+360*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+360*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(440+(pmouseX-400)/15+480*cos(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+480*sin(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(440+(pmouseX-400)/15+600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(440+(pmouseX-400)/15+600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(440+(pmouseX-400)/15+600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(440+(pmouseX-400)/15+600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(440+(pmouseX-400)/15+480*cos(PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+480*sin(PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(440+(pmouseX-400)/15+360*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+360*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(440+(pmouseX-400)/15+240*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+240*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(440+(pmouseX-400)/15+120*cos(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+120*sin(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
endShape();
//left
beginShape();
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(360+(pmouseX-400)/15-120*cos(-PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+120*sin(-PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(360+(pmouseX-400)/15-240*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+240*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(360+(pmouseX-400)/15-360*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+360*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(360+(pmouseX-400)/15-480*cos(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+480*sin(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(360+(pmouseX-400)/15-600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(360+(pmouseX-400)/15-600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(360+(pmouseX-400)/15-600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(360+(pmouseX-400)/15-600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(360+(pmouseX-400)/15-480*cos(PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+480*sin(PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(360+(pmouseX-400)/15-360*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+360*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(360+(pmouseX-400)/15-240*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+240*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(360+(pmouseX-400)/15-120*cos(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+120*sin(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
endShape();
//bright version; all bright versions of shapes will only appear if mouseY > 600
strokeWeight(4);
stroke(0, 0, 100, (-600+mouseY)/2); //white
fill(50, 25, 100, (-600+mouseY)/2); //bright yellow
//right
beginShape();
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(440+(pmouseX-400)/15+120*cos(-PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+120*sin(-PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(440+(pmouseX-400)/15+240*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+240*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(440+(pmouseX-400)/15+360*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+360*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(440+(pmouseX-400)/15+480*cos(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+480*sin(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(440+(pmouseX-400)/15+600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(440+(pmouseX-400)/15+600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(440+(pmouseX-400)/15+600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(440+(pmouseX-400)/15+600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(440+(pmouseX-400)/15+480*cos(PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+480*sin(PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(440+(pmouseX-400)/15+360*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+360*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(440+(pmouseX-400)/15+240*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+240*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(440+(pmouseX-400)/15+120*cos(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+120*sin(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(440+(mouseX-400)/15, 480+(mouseY-400)/30);
endShape();
//left
beginShape();
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(360+(pmouseX-400)/15-120*cos(-PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+120*sin(-PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(360+(pmouseX-400)/15-240*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+240*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(360+(pmouseX-400)/15-360*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+360*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(360+(pmouseX-400)/15-480*cos(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+480*sin(-PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(360+(pmouseX-400)/15-600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(360+(pmouseX-400)/15-600*cos(-PI/18+PI/30*sin(PI/30*frameCount-PI)), 480+(pmouseY-400)/30+600*sin(-PI/18+PI/30*sin(PI/30*frameCount-PI)));
curveVertex(360+(pmouseX-400)/15-600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(360+(pmouseX-400)/15-600*cos(PI/18+PI/30*sin(PI/30*frameCount+PI/4)), 480+(pmouseY-400)/30+600*sin(PI/18+PI/30*sin(PI/30*frameCount+PI/4)));
curveVertex(360+(pmouseX-400)/15-480*cos(PI/18+PI/30*sin(PI/30*frameCount)), 480+(pmouseY-400)/30+480*sin(PI/18+PI/30*sin(PI/30*frameCount)));
curveVertex(360+(pmouseX-400)/15-360*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/4)), 480+(pmouseY-400)/30+360*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/4)));
curveVertex(360+(pmouseX-400)/15-240*cos(PI/18+PI/30*sin(PI/30*frameCount-PI/2)), 480+(pmouseY-400)/30+240*sin(PI/18+PI/30*sin(PI/30*frameCount-PI/2)));
curveVertex(360+(pmouseX-400)/15-120*cos(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)), 480+(pmouseY-400)/30+120*sin(PI/18+PI/30*sin(PI/30*frameCount-3*PI/4)));
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
curveVertex(360+(mouseX-400)/15, 480+(mouseY-400)/30);
endShape();
//arms; both arms are made with one big shape; "sleeves" have trailing effect
strokeWeight(3);
stroke(205, 25, 100, 100); //light blue
fill(0, 0, 100, 100); //white
beginShape();
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/12+2*sin(PI/30*frameCount), 480+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/12+2*sin(PI/30*frameCount), 520+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(580+(mouseX-400)/12+2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(580+(mouseX-400)/12+2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(570+(mouseX-400)/12+2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(578+(mouseX-400)/12+2*sin(PI/30*frameCount), 595+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(560+(mouseX-400)/12+2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(560+(mouseX-400)/12+2*sin(PI/30*frameCount), 600+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(550+(mouseX-400)/12+2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(500+(pmouseX-400)/12+2*sin(PI/30*frameCount), 620+(pmouseY-400)/24-2*sin(PI/30*frameCount));
vertex(400+(mouseX-400)/12, 520+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(300+(pmouseX-400)/12-2*sin(PI/30*frameCount), 620+(pmouseY-400)/24-2*sin(PI/30*frameCount));
vertex(250+(mouseX-400)/12-2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(240+(mouseX-400)/12-2*sin(PI/30*frameCount), 600+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(240+(mouseX-400)/12-2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(222+(mouseX-400)/12-2*sin(PI/30*frameCount), 595+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(230+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(220+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(220+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(220+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/12-2*sin(PI/30*frameCount), 520+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/12-2*sin(PI/30*frameCount), 480+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
endShape();
//bright version
strokeWeight(4);
stroke(205, 10, 100, (-600+mouseY)/2); //light blue
noFill(); //no need to make white even whiter
beginShape();
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/12+2*sin(PI/30*frameCount), 480+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/12+2*sin(PI/30*frameCount), 520+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(580+(mouseX-400)/12+2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(580+(mouseX-400)/12+2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(570+(mouseX-400)/12+2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(578+(mouseX-400)/12+2*sin(PI/30*frameCount), 595+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(560+(mouseX-400)/12+2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(560+(mouseX-400)/12+2*sin(PI/30*frameCount), 600+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(550+(mouseX-400)/12+2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(500+(pmouseX-400)/12+2*sin(PI/30*frameCount), 620+(pmouseY-400)/24-2*sin(PI/30*frameCount));
vertex(400+(mouseX-400)/12, 520+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(300+(pmouseX-400)/12-2*sin(PI/30*frameCount), 620+(pmouseY-400)/24-2*sin(PI/30*frameCount));
vertex(250+(mouseX-400)/12-2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(240+(mouseX-400)/12-2*sin(PI/30*frameCount), 600+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(240+(mouseX-400)/12-2*sin(PI/30*frameCount), 590+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(222+(mouseX-400)/12-2*sin(PI/30*frameCount), 595+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(230+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
vertex(220+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(220+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(220+(mouseX-400)/12-2*sin(PI/30*frameCount), 580+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/12-2*sin(PI/30*frameCount), 520+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/12-2*sin(PI/30*frameCount), 480+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/12, 460+(mouseY-400)/24-2*sin(PI/30*frameCount));
endShape();
//body; one big shape
strokeWeight(4);
stroke(205, 25, 100, 100); //light blue
fill(0, 0, 100, 100); //white
beginShape();
curveVertex(450+(mouseX-400)/10+3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/10+3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/10+3*sin(PI/30*frameCount), 600+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(440+(mouseX-400)/10+3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(440+(mouseX-400)/10+3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(420+(mouseX-400)/10+2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(420+(mouseX-400)/10+2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(380+(mouseX-400)/10-2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(380+(mouseX-400)/10-2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(360+(mouseX-400)/10-3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(360+(mouseX-400)/10-3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(360+(mouseX-400)/10-3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/10-3*sin(PI/30*frameCount), 600+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/10-3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/10-3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
endShape();
//bright version
strokeWeight(5);
stroke(205, 10, 100, (-600+mouseY)/2); //light blue
noFill();
beginShape();
curveVertex(450+(mouseX-400)/10+3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/10+3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/10+3*sin(PI/30*frameCount), 600+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(440+(mouseX-400)/10+3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(440+(mouseX-400)/10+3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(420+(mouseX-400)/10+2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(420+(mouseX-400)/10+2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(380+(mouseX-400)/10-2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(380+(mouseX-400)/10-2*sin(PI/30*frameCount), 660+(mouseY-400)/20-2*sin(PI/30*frameCount));
vertex(360+(mouseX-400)/10-3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(360+(mouseX-400)/10-3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(360+(mouseX-400)/10-3*sin(PI/30*frameCount), 680+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/10-3*sin(PI/30*frameCount), 600+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/10-3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/10-3*sin(PI/30*frameCount), 500+(mouseY-400)/20-2*sin(PI/30*frameCount));
endShape();
//third eye; will open more the closer the cursor is to the bottom
//eyeball
noStroke();
fill(50, 50, 100, 100); //bright yellow
ellipse(400+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount), 120, 80);
//bright version
fill(50, 10, 100, (-600+mouseY)/2); //even brighter yellow
ellipse(400+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount), 120, 80);
//iris; will look towards cursor
strokeWeight(2);
stroke(180, 100, 100, 100); //blue
fill(180, 50, 100, 100); //bright blue
ellipse(400+(mouseX-400)/6, 580+(mouseY-400)/12-2*sin(PI/30*frameCount), 40, 40);
//bright version; flashes rainbow colours
strokeWeight(3);
stroke(0, 0, 100, -600+mouseY); //white
fill((frameCount*4)%360, 50, 100, -600+mouseY);
ellipse(400+(mouseX-400)/6, 580+(mouseY-400)/12-2*sin(PI/30*frameCount), 40, 40);
noStroke();
fill(0, 0, 100, -600+mouseY); //white
ellipse(400+(mouseX-400)/6.5, 580+(mouseY-400)/13-2*sin(PI/30*frameCount), 20, 20); //the bright version has a pupil
//top eyelid; opens and closes relative to cursor
strokeWeight(1);
stroke(0, 0, 100, 100); //white
fill(0, 0, 100, 100); //also white
beginShape();
curveVertex(340+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 600-mouseY/16*(1-cos(mouseY/509.296))+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9, 560+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 520+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9, 560+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9, 560+(mouseY-400)/18-2*sin(PI/30*frameCount));
endShape();
//bottom eyelid; ditto
beginShape();
curveVertex(340+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 600+mouseY/80*(1-cos(mouseY/509.296))+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9, 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9, 600+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 640+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9, 600+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9, 600+(mouseY-400)/18-2*sin(PI/30*frameCount));
endShape();
//eyelashes; line the inner edges of the eyelids
strokeWeight(4);
stroke(205, 25, 100, 100); //light blue
noFill();
beginShape(); //top
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 600-mouseY/16*(1-cos(mouseY/509.296))+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 600+mouseY/80*(1-cos(mouseY/509.296))+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
endShape();
//bright version
strokeWeight(5);
stroke(205, 10, 100, (-600+mouseY)/2); //light blue
beginShape(); //top
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 600-mouseY/16*(1-cos(mouseY/509.296))+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/9-2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 600+mouseY/80*(1-cos(mouseY/509.296))+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/9+2*sin(PI/30*frameCount), 580+(mouseY-400)/18-2*sin(PI/30*frameCount));
endShape();
//head; a simple ellipse
strokeWeight(4);
fill(0, 0, 100, 100); //white
stroke(205, 25, 100, 100); //light blue
ellipse(400+(mouseX-400)/9, 360+(mouseY-400)/18-3*sin(PI/30*frameCount), 360, 240);
//bright version
strokeWeight(5);
stroke(205, 10, 100, (-600+mouseY)/2); //light blue
noFill();
ellipse(400+(mouseX-400)/9, 360+(mouseY-400)/18-3*sin(PI/30*frameCount), 360, 240);
//mouth; ellipse that changes size relative to cursor
strokeWeight(3);
fill(0, 50, 75, 100); //dark pink
stroke(205, 25, 100, 100); //light blue
ellipse(400+(mouseX-400)/5.75, 430+(mouseY-400)/12-3*sin(PI/30*frameCount), mouseY/20-abs(mouseX-400)/180, 2+mouseY/16.666);
//bright version
strokeWeight(4);
fill(0, 25, 100, (-600+mouseY)/2); //pink
stroke(205, 10, 100, (-600+mouseY)/2); //light blue
ellipse(400+(mouseX-400)/5.75, 430+(mouseY-400)/12-3*sin(PI/30*frameCount), mouseY/20-abs(mouseX-400)/180, 2+mouseY/16.666);
//eyes; will close more the closer the cursor is to the bottom; has base colour, pupil and shiny effects
noStroke();
//right
fill(0, 0, 0, 100); //black as the void
ellipse(480+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount), 60, 70);
fill(180, 100, 50, 100); //blue pupil will look at cursor
ellipse(480+(mouseX-400)/5, 370+(mouseY-400)/10-3*sin(PI/30*frameCount), 30-(mouseX-400)/180, 30-abs(mouseY-400)/120-(mouseX-400)/200);
fill(180, 100, 100, 25); //shiny effect
ellipse(480+(mouseX-400)/5.75, 390+(mouseY-400)/12-3*sin(PI/30*frameCount), 40-(mouseX-400)/200, 30-(mouseY-400)/120-(mouseX-400)/200);
fill(0, 0, 100, 80); //shinier effect
ellipse(480+(mouseX-400)/5.75, 350+(mouseY-400)/12-3*sin(PI/30*frameCount), 30-(mouseX-400)/180, 25+(mouseY-400)/120-(mouseX-400)/200);
//left
fill(0, 0, 0, 100);
ellipse(320+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount), 60, 70);
fill(180, 100, 50, 100);
ellipse(320+(mouseX-400)/5, 370+(mouseY-400)/10-3*sin(PI/30*frameCount), 30+(mouseX-400)/180, 30-abs(mouseY-400)/120+(mouseX-400)/200);
fill(180, 100, 100, 25);
ellipse(320+(mouseX-400)/5.75, 390+(mouseY-400)/12-3*sin(PI/30*frameCount), 40+(mouseX-400)/200, 30-(mouseY-400)/120+(mouseX-400)/200);
fill(0, 0, 100, 80);
ellipse(320+(mouseX-400)/5.75, 350+(mouseY-400)/12-3*sin(PI/30*frameCount), 30+(mouseX-400)/180, 25+(mouseY-400)/120+(mouseX-400)/200);
//bright version
fill(0, 0, 100, (-600+mouseY)/2); //white
ellipse(480+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount), 60, 70);
ellipse(320+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount), 60, 70);
//eyelids; opens and closes relative to cursor; align with eyeballs
noStroke();
fill(0, 0, 100, 100); //white
//right
beginShape(); //top
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 335+(mouseY/20)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(450+(mouseX-400)/6, 320+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(510+(mouseX-400)/6, 320+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 405-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(450+(mouseX-400)/6, 420+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(510+(mouseX-400)/6, 420+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//left
beginShape(); //top
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 335+(mouseY/20)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(290+(mouseX-400)/6, 320+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(350+(mouseX-400)/6, 320+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 405-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(290+(mouseX-400)/6, 420+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(350+(mouseX-400)/6, 420+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//teardrops; align with bottom eyelids
fill(180, 100, 75, 100); //blue
triangle(490+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 470+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 480+(mouseX-400)/6, 425-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
triangle(330+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 310+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 320+(mouseX-400)/6, 425-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
//bright version of teardrops
strokeWeight(1);
fill(180, 25, 100, (-600+mouseY)/2); //bright blue
stroke(180, 25, 100, (-600+mouseY)/2); //ditto
triangle(490+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 470+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 480+(mouseX-400)/6, 425-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
triangle(330+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 310+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 320+(mouseX-400)/6, 425-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
//eyelashes; align with eyelids
strokeWeight(3);
noFill();
stroke(205, 25, 100, 100); //light blue
//right
beginShape(); //top
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 335+(mouseY/20)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 405-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//left
beginShape(); //top
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 335+(mouseY/20)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 405-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//bright version
strokeWeight(4);
stroke(205, 10, 100, (-600+mouseY)/2);
//right
beginShape(); //top
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 335+(mouseY/20)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 405-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//left
beginShape(); //top
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 335+(mouseY/20)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 337+(mouseY/21.622)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 344+(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 352+(mouseY/40)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 360+(mouseY/72.727)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 405-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 396-(mouseY/34.783)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 388-(mouseY/50)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 380-(mouseY/88.888)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//hat-looking thing; one big leaf-like shape; different control points move on different scales to give depth
strokeWeight(4);
stroke(50, 100, 100, 100); //yellow
fill(50, 50, 100, 100); //bright yellow
beginShape();
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/8, 120+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
vertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(620+(mouseX-400)/10, 240+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
vertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(660+(mouseX-400)/10, 380+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(560+(mouseX-400)/10, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(560+(mouseX-400)/10, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
vertex(540+(mouseX-400)/8, 340+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(470+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(440+(mouseX-400)/6, 340+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/6, 350+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(360+(mouseX-400)/6, 340+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
vertex(260+(mouseX-400)/8, 340+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(240+(mouseX-400)/8, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(240+(mouseX-400)/10, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(140+(mouseX-400)/10, 380+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
vertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(180+(mouseX-400)/10, 240+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
vertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/8, 120+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
endShape();
//bright version
strokeWeight(5);
stroke(0, 0, 100, (-600+mouseY)/2); //white
fill(50, 25, 100, (-600+mouseY)/2); //bright yellow
beginShape();
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/8, 120+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
vertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(620+(mouseX-400)/10, 240+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
vertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(720+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(660+(mouseX-400)/10, 380+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(560+(mouseX-400)/10, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(560+(mouseX-400)/10, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
vertex(540+(mouseX-400)/8, 340+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(470+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(440+(mouseX-400)/6, 340+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/6, 350+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(360+(mouseX-400)/6, 340+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 320+(mouseY-400)/10-3*sin(PI/30*frameCount));
vertex(260+(mouseX-400)/8, 340+(mouseY-400)/12-3*sin(PI/30*frameCount));
vertex(240+(mouseX-400)/8, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(240+(mouseX-400)/10, 420+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(140+(mouseX-400)/10, 380+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
vertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(80+(mouseX-400)/12, 320+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(180+(mouseX-400)/10, 240+(mouseY-400)/18-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
vertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/8, 200+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/8, 120+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
curveVertex(400+(mouseX-400)/8, 40+(mouseY-400)/30-3*sin(PI/30*frameCount));
endShape();
//hat floppy parts; have trailing effect
strokeWeight(4);
stroke(50, 100, 100, 100); //yellow
fill(50, 50, 100, 100); //bright yellow
//right
beginShape();
curveVertex(580+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(580+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(620+(pmouseX-400)/7, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(580+(pmouseX-400)/7, 520+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(530+(pmouseX-400)/6, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/6, 325+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/6, 325+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//left
beginShape();
curveVertex(220+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(220+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(180+(pmouseX-400)/7, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(220+(pmouseX-400)/7, 520+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(270+(pmouseX-400)/6, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/6, 325+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/6, 325+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//bright version
strokeWeight(5);
stroke(0, 0, 100, (-600+mouseY)/2); //white
fill(50, 25, 100, (-600+mouseY)/2); //bright yellow
//right
beginShape();
curveVertex(580+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(580+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(620+(pmouseX-400)/7, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(580+(pmouseX-400)/7, 520+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(530+(pmouseX-400)/6, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/6, 320+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(520+(mouseX-400)/6, 320+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//left
beginShape();
curveVertex(220+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(220+(mouseX-400)/7, 350+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(180+(pmouseX-400)/7, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(220+(pmouseX-400)/7, 520+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(270+(pmouseX-400)/6, 480+(pmouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/6, 325+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(280+(mouseX-400)/6, 325+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//tags; quads that distort relative to cursor for depth effect, have trailing effect
strokeWeight(4);
stroke(180, 100, 50, 100); //dark blue
fill(180, 100, 75, 100); //blue
quad(425+mouseY/160+(mouseX-400)/7, 80+(mouseY-400)/16-3*sin(PI/30*frameCount)+(mouseX-400)/200, 375-mouseY/160+(mouseX-400)/7, 80+(mouseY-400)/16-3*sin(PI/30*frameCount)-(mouseX-400)/200, 370+(pmouseX-400)/5, 220+pmouseY/12-3*sin(PI/30*frameCount)-(mouseX-400)/100, 430+(pmouseX-400)/5, 220+pmouseY/12-3*sin(PI/30*frameCount)+(mouseX-400)/100);
quad(730+(mouseX-400)/12, 340+(mouseY-400)/15-3*sin(PI/30*frameCount)+mouseX/200, 670+(mouseX-400)/10, 340+(mouseY-400)/15-3*sin(PI/30*frameCount), 670+(pmouseX-400)/10, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount), 730+(pmouseX-400)/12, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount)-mouseX/200);
quad(130+(mouseX-400)/10, 340+(mouseY-400)/15-3*sin(PI/30*frameCount), 70+(mouseX-400)/12, 340+(mouseY-400)/15-3*sin(PI/30*frameCount)+(800-mouseX)/200, 70+(pmouseX-400)/12, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount)-(800-mouseX)/200, 130+(pmouseX-400)/10, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount));
//bright version
strokeWeight(5);
stroke(0, 0, 100, (-600+mouseY)/2); //white
fill(180, 25, 100, (-600+mouseY)/2); //bright blue
quad(425+mouseY/160+(mouseX-400)/7, 80+(mouseY-400)/16-3*sin(PI/30*frameCount)+(mouseX-400)/200, 375-mouseY/160+(mouseX-400)/7, 80+(mouseY-400)/16-3*sin(PI/30*frameCount)-(mouseX-400)/200, 370+(pmouseX-400)/5, 220+pmouseY/12-3*sin(PI/30*frameCount)-(mouseX-400)/100, 430+(pmouseX-400)/5, 220+pmouseY/12-3*sin(PI/30*frameCount)+(mouseX-400)/100);
quad(730+(mouseX-400)/12, 340+(mouseY-400)/15-3*sin(PI/30*frameCount)+mouseX/200, 670+(mouseX-400)/10, 340+(mouseY-400)/15-3*sin(PI/30*frameCount), 670+(pmouseX-400)/10, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount), 730+(pmouseX-400)/12, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount)-mouseX/200);
quad(130+(mouseX-400)/10, 340+(mouseY-400)/15-3*sin(PI/30*frameCount), 70+(mouseX-400)/12, 340+(mouseY-400)/15-3*sin(PI/30*frameCount)+(800-mouseX)/200, 70+(pmouseX-400)/12, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount)-(800-mouseX)/200, 130+(pmouseX-400)/10, 520+(pmouseY-400)/15-3*sin(PI/30*frameCount));
//trippy circles of waves; will only appear if mouseY > 600; spin and wave formations are controlled by sine waves
strokeWeight(4);
noFill();
stroke((frameCount*6)%360, 50, 100, (-600+mouseY)/4); //flashes rainbow colours
beginShape();
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount+PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount+PI/4));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+3*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+3*PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount+PI/2), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount+PI/2));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+5*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+5*PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount+3*PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount+3*PI/4));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+7*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+7*PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount+PI), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount+PI));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+9*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+9*PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount+5*PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount+5*PI/4));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+11*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+11*PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount+3*PI/2), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount+3*PI/2));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+13*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+13*PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount+7*PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount+7*PI/4));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+15*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+15*PI/8));
vertex(400+(mouseX-400)/6+(400+100*sin(PI/10*frameCount))*cos(PI/120*frameCount), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+100*sin(PI/10*frameCount))*sin(PI/120*frameCount));
endShape();
stroke((frameCount*6+180)%360, 50, 100, (-600+mouseY)/4); //flashes rainbow colours
beginShape(); //this one convulses more than the one above
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+PI/4));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+3*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+3*PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+PI/2), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+PI/2));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+5*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+5*PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+3*PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+3*PI/4));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+7*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+7*PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+PI), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+PI));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+9*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+9*PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+5*PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+5*PI/4));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+11*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+11*PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+3*PI/2), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+3*PI/2));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+13*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+13*PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount+7*PI/4), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount+7*PI/4));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount))*cos(PI/120*frameCount+15*PI/8), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount))*sin(PI/120*frameCount+15*PI/8));
vertex(400+(mouseX-400)/6+(400+200*sin(PI/10*frameCount-PI))*cos(PI/120*frameCount), 580+(mouseY-400)/12-2*sin(PI/30*frameCount)+(400+200*sin(PI/10*frameCount-PI))*sin(PI/120*frameCount));
endShape();
//pretty light show; will only appear if mouseY > 600; each beam of light is a really long triangle
noStroke();
fill(0, 0, 100, (-600+mouseY)/4); //translucent white
triangle(400+(mouseX-400)/6.5, 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1), 400+(mouseX-400)/6.5+1000*cos(PI/100*frameCount*-1), 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1)+1000*sin(PI/100*frameCount*-1), 400+(mouseX-400)/6.5+1000*cos(PI/100*frameCount*-1+PI/6), 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1)+1000*sin(PI/100*frameCount*-1+PI/6));
triangle(400+(mouseX-400)/6.5, 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1), 400+(mouseX-400)/6.5+1000*cos(PI/100*frameCount*-1+2*PI/3), 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1)+1000*sin(PI/100*frameCount*-1+2*PI/3), 400+(mouseX-400)/6.5+1000*cos(PI/100*frameCount*-1+2*PI/3+PI/6), 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1)+1000*sin(PI/100*frameCount*-1+2*PI/3+PI/6));
triangle(400+(mouseX-400)/6.5, 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1), 400+(mouseX-400)/6.5+1000*cos(PI/100*frameCount*-1+4*PI/3), 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1)+1000*sin(PI/100*frameCount*-1+4*PI/3), 400+(mouseX-400)/6.5+1000*cos(PI/100*frameCount*-1+4*PI/3+PI/6), 580+(mouseY-400)/13-2*sin(PI/30*frameCount*-1)+1000*sin(PI/100*frameCount*-1+4*PI/3+PI/6));
}
void mousePressed() {
//eyes blink when mouse is pressed
colorMode(HSB, 360, 100, 100, 100);
//eyelids; completely cover eyes, eyelashes and teardrops
fill(0, 0, 100, 100); //white
strokeWeight(4);
stroke(0, 0, 100, 100);
ellipse(480+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount), 60, 70);
ellipse(320+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount), 60, 70);
triangle(490+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 470+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 480+(mouseX-400)/6, 425-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
triangle(330+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 310+(mouseX-400)/6, 403-(mouseY/27.586)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 320+(mouseX-400)/6, 425-(mouseY/26.666)*(1-cos(mouseY/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
//new teardrops; in closed position regardless of mouse position
noStroke();
fill(180, 100, 75, 100); //blue
triangle(490+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 470+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 480+(mouseX-400)/6, 425-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
triangle(330+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 310+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 320+(mouseX-400)/6, 425-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
//bright version of teardrops
strokeWeight(1);
fill(180, 25, 100, (-600+mouseY)/2); //bright blue
stroke(180, 25, 100, (-600+mouseY)/2); //ditto
triangle(490+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 470+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 480+(mouseX-400)/6, 425-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
triangle(330+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 310+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount), 320+(mouseX-400)/6, 425-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
//new eyelashes; in closed position regardless of mouse position
strokeWeight(4);
noFill();
stroke(205, 25, 100, 100); //light blue
//right
beginShape(); //top
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 335+(800/20)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 405-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//left
beginShape(); //top
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 335+(800/20)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 405-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//bright version
strokeWeight(4);
stroke(205, 10, 100, (-600+mouseY)/2);
//right
beginShape(); //top
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 335+(800/20)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(510+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(508+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(505+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(500+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(490+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(480+(mouseX-400)/6, 405-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(470+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(460+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(455+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(452+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(450+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
//left
beginShape(); //top
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 335+(800/20)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 337+(800/21.622)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 344+(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 352+(800/40)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 360+(800/72.727)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
beginShape(); //bottom
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(350+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(348+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(345+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(340+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(330+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(320+(mouseX-400)/6, 405-(800/26.666)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(310+(mouseX-400)/6, 403-(800/27.586)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(300+(mouseX-400)/6, 396-(800/34.783)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(295+(mouseX-400)/6, 388-(800/50)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(292+(mouseX-400)/6, 380-(800/88.888)*(1-cos(800/509.296))+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
curveVertex(290+(mouseX-400)/6, 370+(mouseY-400)/12-3*sin(PI/30*frameCount));
endShape();
}