void setup() { //set size of window size(400, 400); } void draw() { //set background color (NIGHT sky) background(56, 27, 31); //draw stars stroke(255); strokeWeight(2); point(10, 20); point(40, 140); point(180, 90); point(120, 160); point(150, 120); point(290, 200); //draw stars (smaller + less bright) stroke(255, 80); strokeWeight(1.5); point(360, 90); point(260, 150); point(340, 160); point(240, 90); point(310, 70); point(20, 200); //set - shape modes ellipseMode(CENTER); rectMode(CORNERS); //set - no outline for shapes noStroke(); //draw DAYTIME sky //sky becomes more opaque as mouse moves downwards fill(109, 57, 67, mouseY); rect(0, 0, 400, 400); //draw Sun //beams will pulse slowly fill(133, 81, 89, mouseY); ellipse(200, 200, 400+10*sin(frameCount*.05), 400+10*sin(frameCount*.05)); fill(158, 108, 119, mouseY); ellipse(200, 200, 330+8*sin(frameCount*.05), 330+8*sin(frameCount*.05)); fill(185, 141, 150, mouseY); ellipse(200, 200, 250+6*sin(frameCount*.05), 250+6*sin(frameCount*.05)); fill(210, 196, 199, mouseY); ellipse(200, 200, 170+4*sin(frameCount*.05), 170+4*sin(frameCount*.05)); fill(245, 230, 230, mouseY); ellipse(200, 200, 90, 90); //draw Moon - changes position according to Y value //beams will pulse slowly fill(255); ellipse(80, mouseY+50, 50, 50); fill(255, 95); ellipse(80, mouseY+50, 70+5*sin(frameCount*.05), 70+5*sin(frameCount*.05)); fill(255, 85); ellipse(80, mouseY+50, 100+5*sin(frameCount*.05), 100+5*sin(frameCount*.05)); //draw GLOW of floating sparkles (background) //will pulse slowly //bobs up and down at different rates fill(255, 95); ellipse(220, 20+2*sin(frameCount*.047)+mouseY, 2+5*sin(frameCount*.03), 2+5*sin(frameCount*.03)); ellipse(340, 20+3*sin(frameCount*.043)+mouseY, 5+5*sin(frameCount*.04), 5+5*sin(frameCount*.04)); ellipse(140, 60+2*sin(frameCount*.029)+mouseY, 3+5*sin(frameCount*.02), 3+5*sin(frameCount*.02)); ellipse(20, 100+2*sin(frameCount*.032)+mouseY, 2+5*sin(frameCount*.045), 2+5*sin(frameCount*.045)); ellipse(280, 100+4*sin(frameCount*.035)+mouseY, 4+5*sin(frameCount*.035), 4+4*sin(frameCount*.035)); ellipse(390, 100+5*sin(frameCount*.047)+mouseY, 5+5*sin(frameCount*.025), 5+5*sin(frameCount*.025)); ellipse(320, 140+2*sin(frameCount*.041)+mouseY, 5+5*sin(frameCount*.037), 5+5*sin(frameCount*.037)); ellipse(40, 180+3*sin(frameCount*.032)+mouseY, 5+5*sin(frameCount*.042), 5+5*sin(frameCount*.042)); //draw YELLOW CENTER of floating sparkles (background) //bobs in tandem with GLOW fill(246, 244, 145); ellipse(220, 20+2*sin(frameCount*.047)+mouseY, 2, 2); ellipse(340, 20+3*sin(frameCount*.043)+mouseY, 5, 5); ellipse(140, 60+2*sin(frameCount*.029)+mouseY, 3, 3); ellipse(20, 100+2*sin(frameCount*.032)+mouseY, 2, 2); ellipse(280, 100+4*sin(frameCount*.035)+mouseY, 4, 4); ellipse(390, 100+5*sin(frameCount*.047)+mouseY, 5, 5); ellipse(320, 140+2*sin(frameCount*.041)+mouseY, 5, 5); ellipse(40, 180+3*sin(frameCount*.032)+mouseY, 5, 5); //draw mountain 1 (center) fill(79, 46, 49); triangle(0, 260, 170, 180, 350, 260); //draw mountain 2 (left) fill(95, 51, 54); triangle(0, 260, 80, 160, 190, 260); //draw mountain 3 (right); fill(99, 43, 47); quad(290, 220, 320, 180, 400, 160, 400, 260); rect(290, 220, 400, 260); //draw tree foliage (backfill) fill(182, 109, 108); rect(150, 0, 270, 60); rect(180, 0, 400, 50); triangle(360, 70, 400, 40, 360, 0); //draw tree trunk fill(207, 198, 208); quad(240, 60, 260, 60, 340, 100, 350, 120); quad(300, 40, 320, 40, 360, 120, 350, 120); quad(350, 120, 360, 120, 380, 220, 380, 260); quad(380, 260, 375, 220, 390, 220, 400, 250); quad(380, 260, 370, 60, 380, 50, 390, 220); quad(380, 260, 380, 240, 400, 245, 400, 260); //draw tree foliage fill(182, 109, 108); quad(140, 0, 130, 30, 400, 30, 400, 0); quad(140, 0, 180, 60, 150, 70, 130, 30); quad(180, 60, 210, 70, 240, 60, 240, 0); quad(240, 40, 240, 60, 270, 60, 280, 50); quad(280, 50, 300, 60, 305, 50, 280, 0); quad(320, 40, 340, 80, 360, 70, 360, 0); quad(360, 70, 370, 75, 370, 0, 300, 0); quad(380, 50, 390, 60, 400, 60, 400, 0); //draw ground (middle plane) fill(126, 93, 105); rect(0, 260, 400, 400); //draw GLOW of floating sparkle (front of mountains) //will pulse slowly fill(255, 95); ellipse(110, 240+4*sin(frameCount*.039)+mouseY, 2+5*sin(frameCount*.028), 2+5*sin(frameCount*.028)); //draw YELLOW CENTER of floating sparkle (front of mountains) //bobs in tandem with GLOW fill(246, 244, 145); ellipse(110, 240+4*sin(frameCount*.039)+mouseY, 2, 2); //draw ground (front) fill(150, 127, 136); rect(0, 320, 400, 400); //draw bush (back, left) fill(79, 37, 43); quad(0, 310, 0, 330, 145, 330, 150, 310); quad(0, 300, 0, 310, 130, 310, 125, 300); rect(0, 270, 110, 300); rect(0, 250, 80, 270); rect(20, 230, 40, 250); quad(0, 210, 0, 250, 20, 250, 20, 230); //draw bush (back, right) quad(400, 250, 380, 260, 380, 280, 400, 280); rect(360, 280, 400, 320); rect(340, 300, 360, 320); rect(330, 310, 340, 320); //draw GLOW of floating sparkles - (middle plane) //will pulse slowly //bobs up and down at different rates fill(255, 95); ellipse(20, 300+3*sin(frameCount*.035)+mouseY, 3+5*sin(frameCount*.047), 3+5*sin(frameCount*.047)); ellipse(240, 300+4*sin(frameCount*.037)+mouseY, 4+5*sin(frameCount*.038), 4+5*sin(frameCount*.038)); ellipse(120, 320+2*sin(frameCount*.025)+mouseY, 4+5*sin(frameCount*.022), 4+5*sin(frameCount*.022)); //draw YELLOW CENTER of floating sparkles (middle plane) //bobs in tandem with GLOW fill(246, 244, 145); ellipse(20, 300+3*sin(frameCount*.035)+mouseY, 3, 3); ellipse(240, 300+4*sin(frameCount*.037)+mouseY, 4, 4); ellipse(120, 320+2*sin(frameCount*.025)+mouseY, 4, 4); //draw casted light (from moon) //light expands slightly according to frameCount changes fill(255, 70); quad(mouseY+80, mouseY+50, 405+2*sin(frameCount*.05), 270, 400, 400, 130, 405+5*sin(frameCount*.05)); //draw bush (front, left) fill(120, 66, 66); quad(0, 320, 20, 340, 20, 400, 0, 400); rect(20, 340, 60, 400); quad(60, 360, 60, 400, 90, 400, 90, 385); quad(90, 385, 90, 400, 120, 400, 110, 390); //draw bush (front, right) fill(120, 66, 66); quad(400, 330, 400, 400, 370, 400, 370, 340); quad(360, 400, 370, 400, 370, 340, 360, 375); quad(360, 375, 360, 400, 290, 400, 320, 380); //draw plant fill(52, 83, 88); triangle(330, 340, 340, 340, 320, 360); triangle(300, 310, 310, 310, 320, 360); triangle(315, 340, 300, 330, 290, 330); quad(310, 310, 300, 310, 280, 300, 270, 280); triangle(310, 310, 310, 280, 300, 290); triangle(320, 360, 320, 280, 332, 260); quad(320, 320, 320, 330, 350, 315, 350, 310); triangle(350, 315, 360, 290, 350, 310); triangle(320, 290, 300, 250, 310, 240); triangle(305, 260, 310, 200, 310, 250); triangle(330, 270, 330, 240, 340, 220); triangle(330, 260, 350, 240, 360, 240); triangle(325, 300, 350, 280, 340, 280); quad(340, 280, 360, 280, 370, 270, 360, 270); triangle(360, 270, 370, 250, 370, 270); //draw left flower //opacity for all flowers change according to Y axis; disappears during "night" fill(237, 176, 219, mouseY); triangle(280, 290, 280, 280, 290, 280); triangle(280, 290, 280, 300, 290, 300); quad(280, 290, 270, 295, 260, 290, 270, 285); //draw top flower quad(305, 230, 310, 220, 320, 220, 320, 225); triangle(305, 230, 300, 215, 290, 220); triangle(305, 230, 300, 230, 300, 240); triangle(305, 230, 320, 230, 320, 240); //draw right flower triangle(360, 270, 360, 260, 350, 260); triangle(360, 270, 350, 270, 350, 280); triangle(360, 270, 365, 260, 370, 265); quad(360, 270, 370, 275, 370, 280, 365, 280); //draw bottom flower triangle(340, 320, 350, 320, 350, 330); triangle(340, 320, 340, 330, 335, 330); triangle(340, 320, 330, 320, 335, 315); triangle(340, 320, 340, 310, 350, 310); //draw flowerbuds ellipse(300, 250, 8, 8); ellipse(310, 290, 9, 9); ellipse(300, 320, 7, 7); ellipse(335, 260, 6, 6); ellipse(350, 240, 5, 5); ellipse(340, 290, 5, 5); //GLOW of floating sparkles (front) //will pulse slowly //bobs up and down at different rates fill(255, 95); ellipse(40, 370+4*sin(frameCount*.02)+mouseY, 2+5*sin(frameCount*.036), 2+5*sin(frameCount*.036)); ellipse(380, 360+3*sin(frameCount*.03)+mouseY, 3+5*sin(frameCount*.039), 3+5*sin(frameCount*.039)); //YELLOW CENTER of floating sparkles (front) //bobs in tandem with GLOW fill(246, 244, 145); ellipse(40, 370+4*sin(frameCount*.02)+mouseY, 2, 2); ellipse(380, 360+3*sin(frameCount*.03)+mouseY, 3, 3); //FAIRY //Draw WHITE wings (underbase, left) fill(255, 90); triangle(125, 115, 125, 145, 190, 190); triangle(130, 175, 80, 190, 180, 200); triangle(190, 210, 140, 275, 145, 235); //Draw WHITE wings (underbase, right) quad(220, 185, 250, 145, 290, 120, 260, 160); quad(225, 195, 250, 185, 310, 185, 250, 200); triangle(220, 210, 230, 240, 280, 275); //Draw ORANGE wings (overlay, left) //opacity changes, allowing the color to fade in and out //varied formula for opacity, making wings change color at different rates fill(252, 134, 82, 100+60*sin(frameCount*.05)); triangle(125, 115, 125, 145, 190, 190); fill(252, 134, 82, 100+60*sin(frameCount*.045)); triangle(130, 175, 80, 190, 180, 200); fill(252, 134, 82, 100+60*sin(frameCount*.03)); triangle(190, 210, 140, 275, 145, 235); //ORANGE OVERLAY wings (right) fill(252, 134, 82, 100+60*sin(frameCount*.038)); quad(220, 185, 250, 145, 290, 120, 260, 160); fill(252, 134, 82, 100+60*sin(frameCount*.06)); quad(225, 195, 250, 185, 310, 185, 250, 200); fill(252, 134, 82, 100+60*sin(frameCount*.055)); triangle(220, 210, 230, 240, 280, 275); //BODY //draw back leg (thigh, calf, foot) fill(50, 41, 48); triangle(190, 260, 230, 260, 190, 360); triangle(190, 360, 180, 340, 140, 360); triangle(140, 360, 120, 345, 90, 360); //draw front leg (thigh, calf, foot) fill(60, 48, 60); triangle(210, 250, 175, 275, 240, 360); quad(150, 360, 190, 340, 230, 345, 240, 360); triangle(160, 360, 110, 360, 140, 350); //draw left arm triangle(185, 185, 140, 235, 190, 195); triangle(140, 235, 125, 190, 155, 220); //draw left hand quad(120, 210, 120, 190, 125, 190, 125, 200); triangle(100, 200, 120, 200, 120, 190); triangle(90, 210, 100, 200, 110, 200); //draw right arm triangle(230, 220, 245, 215, 270, 250); quad(270, 250, 260, 240, 275, 190, 280, 180); quad(135, 200, 130, 200, 120, 190, 125, 190); //draw right hand triangle(305, 170, 295, 180, 300, 180); quad(275, 190, 275, 185, 280, 180, 300, 180); //draw chest quad(240, 210, 230, 190, 180, 190, 210, 230); quad(230, 190, 235, 195, 235, 200, 230, 200); rect(215, 175, 205, 190); //draw face fill(60, 48, 60); quad(215, 190, 185, 175, 180, 130, 215, 130); quad(215, 175, 225, 180, 240, 140, 180, 140); rect(185, 130, 240, 140); triangle(235, 165, 220, 130, 220, 165); rect(165, 150, 220, 160); //draw eye - GREEN fill(118, 165, 116); triangle(230, 155, 225, 155, 230, 160); //draw eye - WHITE //opacity changes according to mouseX, creating gradient between layered objects fill(230, mouseX); triangle(230, 155, 225, 155, 230, 160); //draw clothes fill(75, 65, 62); quad(230, 220, 215, 270, 210, 250, 215, 235); quad(180, 250, 175, 275, 210, 250, 215, 235); quad(215, 270, 210, 250, 215, 235, 230, 260); quad(200, 220, 215, 205, 230, 220, 220, 240); quad(220, 235, 225, 235, 230, 250, 220, 250); rect(220, 250, 230, 260); triangle(235, 205, 245, 215, 210, 230); //draw hair fill(159, 79, 82); quad(165, 150, 165, 135, 230, 135, 210, 150); quad(165, 135, 180, 120, 250, 120, 250, 140); quad(180, 110, 180, 120, 250, 120, 240, 110); triangle(180, 110, 200, 105, 210, 110); quad(210, 110, 220, 105, 225, 105, 230, 110); quad(250, 140, 220, 130, 235, 150, 250, 145); triangle(215, 155, 200, 150, 210, 150); quad(165, 160, 165, 150, 200, 160, 180, 170); quad(165, 160, 200, 160, 205, 165, 205, 195); quad(165, 160, 200, 160, 200, 180, 180, 180); quad(180, 180, 175, 190, 205, 190, 205, 180); triangle(175, 190, 210, 190, 205, 195); triangle(200, 210, 205, 190, 210, 190); //YELLOW orb in Fairy's hand //width fluxes, making it look as if its spinning //bobs up and down fill(255, 252, 48, 80); ellipse(290, 165+5*sin(frameCount*.05), 10 + 5*sin(frameCount*.07), 15); fill(255, 252, 48); ellipse(290, 165+5*sin(frameCount*.05), 8 + 2*sin(frameCount*.07), 8); //WHITE orb //opacity increases as mouse moves rightwards //orb seemingly changes color according to horizontal mouse position fill(255, 80); ellipse(290, 165+5*sin(frameCount*.05), 10 + 5*sin(frameCount*.07), 10); fill(255, mouseX); ellipse(290, 165+5*sin(frameCount*.05), 8 + 2*sin(frameCount*.07), 8); }