/* Program Name: deadorange_kills_everything Program Description: Use the mouse to change the environment! - Mouse Up/Down: Make deadorange rise/set - Mouse Left/Right: Kill the trees - Mouse Click: Display a message - Key Press: Display another message Author: Maxwell Hayes Woodley Program Creation Date: 06/09/18 Program Submission Date: 19/09/18 Created For: Assignment 1 - Interactive Drawing [Intro to Media Computation] Teacher - Nicholas Hesler Changelog: Not Available */ //Purpose: Executed on start void setup(){ size(400,400); // Set size of canvas to 400x400 colorMode(RGB,400,400,400,400); // Set colour mode to match all channels with size of canvas for easy calculations // Print a message println("Hear it's laugher. There is no escape. Deadorange kills everything."); } // Purpose: Executes every frame void draw(){ background(400-(-mouseY+400)/1.5,200-(-mouseY+300),0+(-mouseY+400)/5); // Set the background to orange or purple, depending on the mouse's Y position /* COORDINATES TO USE IN EQUATIONS ###RAYS### POINT TO ROTATE AROUND: 200,mouseY*.5+75 (deadorange origin) TOP YELLOW RAY: 200,((mouseY*.5+75)-400) 350,((mouseY*.5+75)-400) BOTTOM YELLOW RAY: 200,((mouseY*.5+75)+400) 350,((mouseY*.5+75)+400) RIGHT YELLOW RAY: 600,((mouseY*.5+75)+150) 600,((mouseY*.5+75)-150) LEFT YELLOW RAY: -200,((mouseY*.5+75)+150) -200,((mouseY*.5+75)-150) */ // ###DRAW SUNRAYS### fill(400-(-mouseY+400)/1.5,300-(-mouseY+300),0+(-mouseY+400)/5); // Set fill to yellow or purple, depending on mouse Y position noStroke(); // Get rid of stroke for rays // Ray 1, top triangle(200,mouseY*.5+75, ( ((50-200)*cos(millis()*0.001)) - (((mouseY*.5+75-400)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75-400)-(mouseY*.5+75))*cos(millis()*0.001)) + ((50-200)*sin(millis()*0.001)) )+(mouseY*.5+75), ( ((350-200)*cos(millis()*0.001)) - (((mouseY*.5+75-400)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75-400)-(mouseY*.5+75))*cos(millis()*0.001)) + ((350-200)*sin(millis()*0.001)) )+(mouseY*.5+75)); // Ray 2, bottom triangle(200,mouseY*.5+75, ( ((50-200)*cos(millis()*0.001)) - (((mouseY*.5+75+400)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75+400)-(mouseY*.5+75))*cos(millis()*0.001)) + ((50-200)*sin(millis()*0.001)) )+(mouseY*.5+75), ( ((350-200)*cos(millis()*0.001)) - (((mouseY*.5+75+400)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75+400)-(mouseY*.5+75))*cos(millis()*0.001)) + ((350-200)*sin(millis()*0.001)) )+(mouseY*.5+75)); // Ray 3, right triangle(200,mouseY*.5+75, ( ((600-200)*cos(millis()*0.001)) - (((mouseY*.5+75+150)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75+150)-(mouseY*.5+75))*cos(millis()*0.001)) + ((600-200)*sin(millis()*0.001)) )+(mouseY*.5+75), ( ((600-200)*cos(millis()*0.001)) - (((mouseY*.5+75-150)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75-150)-(mouseY*.5+75))*cos(millis()*0.001)) + ((600-200)*sin(millis()*0.001)) )+(mouseY*.5+75)); // Ray 4, left triangle(200,mouseY*.5+75, ( ((-200-200)*cos(millis()*0.001)) - (((mouseY*.5+75+150)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75+150)-(mouseY*.5+75))*cos(millis()*0.001)) + ((-200-200)*sin(millis()*0.001)) )+(mouseY*.5+75), ( ((-200-200)*cos(millis()*0.001)) - (((mouseY*.5+75-150)-(mouseY*.5+75))*sin(millis()*0.001)) )+200, ( (((mouseY*.5+75-150)-(mouseY*.5+75))*cos(millis()*0.001)) + ((-200-200)*sin(millis()*0.001)) )+(mouseY*.5+75)); // ###DRAW AURA### noStroke(); // Get rid of stroke for aura ellipseMode(CENTER); // Set ellipse mode to center fill(0,((-mouseY+400)/3)-50); // Set opaciyt of middle aura to low ellipse(200,mouseY*.5+75,275+sin(millis()*0.001)*5,275+sin(millis()*0.001)*5); // Draw innermost aura fill(0,((-mouseY+400)/4)-50); // Set opacity of middle aura to lower ellipse(200,mouseY*.5+75,325+cos(millis()*0.001)*5,325+cos(millis()*0.001)*5); // Draw middle aura fill(0,((-mouseY+400)/5)-50); // Set opacity of outermost aura to lowest ellipse(200,mouseY*.5+75,375+sin(millis()*0.001)*5,375+sin(millis()*0.001)*5); // Draw outermost aura // ###DRAW DEADORANGE### stroke(0); // Set stroke to black strokeWeight(2); // Set stroke weight to 1.5 fill(350-(-mouseY+400)/2.6,250-(-mouseY+300)/2,0+(-mouseY+400)/23.6); // Set fill to various shades of orange, depending on the mouse's Y position ellipseMode(CENTER); // Set ellipse mode to center ellipse(200,mouseY*.5+75,250,250); // Draw ellipse that follows mouse // ###DRAW FACE### strokeWeight(3); // Set stroke weight to 3 stroke(0,0,0,(-mouseY+400)); // Set stroke to black fill(400-(-mouseY+400)/2.6,350-(-mouseY+300)/2,50+(-mouseY+400)/23.6,(-mouseY+400)); // Set fill to pale yellow arc(200,(mouseY*.5+75),230,230,0,PI); // Draw mouth arc fill(0,0,0,-mouseY+400); // Set fill to black // Draw teeth lines... line(200,mouseY*.5+190,150,mouseY*.5+75); // Draw tooth line 1 line(200,mouseY*.5+190,250,mouseY*.5+75); // Draw tooth line 2 line(150,mouseY*.5+75,115,mouseY*.5+150); // Draw tooth line 3 line(250,mouseY*.5+75,285,mouseY*.5+150); // Draw tooth line 4 noStroke(); // Get rid of stroke fill(0,0,0,(-mouseY+400)); // Set fill to black // Draw eyes... // Draw left eye 1 quad(105+mouseX*.025,mouseY*.5+5, 145+mouseX*.025,mouseY*.5+25, 165+mouseX*.025,mouseY*.5+65, 125+mouseX*.025,mouseY*.5+45); // Draw left eye 2 quad(165+mouseX*.025,mouseY*.5+5, 125+mouseX*.025,mouseY*.5+25, 105+mouseX*.025,mouseY*.5+65, 145+mouseX*.025,mouseY*.5+45); // Draw right eye 1 quad(290+mouseX*.025,mouseY*.5+10, 255+mouseX*.025,mouseY*.5+25, 240+mouseX*.025,mouseY*.5+60, 275+mouseX*.025,mouseY*.5+45); // Draw right eye 2 quad(240+mouseX*.025,mouseY*.5+10, 275+mouseX*.025,mouseY*.5+25, 290+mouseX*.025,mouseY*.5+60, 255+mouseX*.025,mouseY*.5+45); // Draw stem stroke(0,0,0,(-mouseY+400)); // Set stroke to black line(200,mouseY*.5-30,200,mouseY*.5-5); // Draw stem line 1 line(190,mouseY*.5-26,210,mouseY*.5-8); // Draw stem line 2 line(210,mouseY*.5-26,190,mouseY*.5-8); // Draw stem line 3 // Draw orange spots stroke(0,0,0,(-mouseY+400)); // Set stroke to black strokeWeight(3); // Set stroke weight to 3 point(160,mouseY*.5-30); // Draw spot 1 point(230,mouseY*.5+60); // Draw spot 2 point(100,mouseY*.5+50); // Draw spot 3 point(190,mouseY*.5+20); // Draw spot 4 point(250,mouseY*.5-10); // Draw spot 5 point(300,mouseY*.5+30); // Draw spot 6 // ###DRAW GOOPCLOUDS### // Dark ellipses/lines create stroke that meshes stroke(0); fill(0); // Set fill to black ellipseMode(CENTER); // Set ellipse mode to center ellipse(0,10,76,76); // Draw stroke for cloud 1-1 ellipse(50,25,76,76); // Draw stroke for cloud 1-2 ellipse(100,0,76,76); // Draw stroke for cloud 1-3 ellipse(400,-10,76,76); // Draw cloud 2-1 ellipse(350,10,76,76); // Draw cloud 2-2 ellipse(310,-5,76,76); // Draw cloud 2-3 strokeWeight(18.5); // Set stroke weight to 18.5 line(25,-10,25,(-mouseY+400)/5); // Draw stroke for goop 1 line(90,-5,90,(-mouseY+400)/3.5); // Draw stroke for goop 2 line(340,0,340,(-mouseY+400)/6); // Draw stroke for goop 3 // Regular ellipses/lines layered over meshed stroke noStroke(); // Get rid of stroke, as dark ellipses/clouds act as meshed stroke // Set fill to between white and pale orange, depending on the mouse's Y position fill(400-(-mouseY+400)/2+100, 400-(-mouseY+400)/1.25+100, 400-(-mouseY+400)+100); ellipseMode(CENTER); // Set ellipseMode to center ellipse(0,10,75,75); // Draw cloud 1-1 ellipse(50,25,75,75); // Draw cloud 1-2 ellipse(100,0,75,75); // Draw cloud 1-3 ellipse(400,-10,75,75); // Draw cloud 2-1 ellipse(350,10,75,75); // Draw cloud 2-2 ellipse(310,-5,75,75); // Draw cloud 2-3 // Set stroke to between white and pale orange, depending on the mouse's Y position stroke(400-(-mouseY+400)/2+100, 400-(-mouseY+400)/1.25+100, 400-(-mouseY+400)+100); strokeWeight(15); // Set stroke weight to 15 line(25,-10,25,(-mouseY+400)/5); // Draw goop 1 line(90,-5,90,(-mouseY+400)/3.5); // Draw goop 2 line(340,0,340,(-mouseY+400)/6); // Draw goop 3 // ###DRAW HILLS### // Black quads/triangles create stroke that meshes stroke(0); // Set stroke to black strokeWeight(5); // Set stroke weight to 5 fill(0); // Set fill to black quad(300,200,350,400,100,400,270,210); // Draw stroke for hill quad quad(0,400,400,400,400,325,0,300); // Draw stroke for right quad triangle(400,300,400,400,100,400); // Draw stroke for right triangle triangle(0,250,0,400,300,400); // Draw stroke for left quad // Regular quads/triangles layered over meshed stroke noStroke(); // Get rid of stroke, as dark quads/triangles act as meshed stroke fill(0+(-mouseY+400)/2,300-(-mouseY+300)/2,0); // Set fill to slowly desaturating shades of green, depending on the mouse's Y position quad(300,200,350,400,100,400,270,210); // Draw hill quad quad(0,400,400,400,400,325,0,300); // Draw right quad triangle(400,300,400,400,100,400); // Draw right triangle triangle(0,250,0,400,300,400); // Draw left // ###DRAW TREES### // Tree 1 fill(0); // Set fill to black stroke(0); // Set stroke to black strokeWeight(4); // Set stroke weight to 4 triangle(20,375,35,375,50,300); // Draw trunk mesh part 1 triangle(35,345,40,325,20,250); // Draw trunk mesh part 2 noStroke(); // Turn off stroke fill(150-(-mouseY+400)*0.375,110-(-mouseY+400)*0.275,0-(-mouseY+400)); // Set fill to between brown and black triangle(20,375,35,375,50,300); // Draw trunk part 1 triangle(35,345,40,325,20,250); // Draw trunk part 2 stroke(0,0,0,(400-(-mouseY+400))+abs((32.5-mouseX))); // Set stroke to black fill(100+(-mouseY+400)/2,400-(-mouseY+300)/2,100,(400-(-mouseY+400))+abs((32.5-mouseX))); // Set fill to slowly desaturating shades of green, depending on the mouse's Y position ellipseMode(CORNER); // Set ellipseMode to corner ellipse(-5,245,75,75+(-mouseY+400)/16); // Draw an ellipse that lengthens/shortens, depending on the mouse's Y position // Tree 2 fill(0); // Set fill to black stroke(0); // Set stroke to black strokeWeight(2); // Set stroke weight to 2 quad(300,175,280,205,290,202,305,175); // Draw trunk mesh part 1 triangle(300,175,305,175,290,150); // Draw trunk mesh part 2 triangle(300,175,305,175,315,170); // Draw trunk mesh part 3 noStroke(); // Get rid of stroke fill(150-(-mouseY+400)*0.375,110-(-mouseY+400)*0.275,0-(-mouseY+400)); // Set fill to between brown and black quad(300,175,280,205,290,202,305,175); // Draw trunk part 1 triangle(300,175,305,175,290,150); // Draw trunk part 2 triangle(308,175,305,175,315,170); // Draw trunk part 3 stroke(0,0,0,(400-(-mouseY+400))+abs((298-mouseX))); // Set stroke to black fill(100+(-mouseY+400)/2,400-(-mouseY+300)/2,100,(400-(-mouseY+400))+abs((298-mouseX))); // Set fill to slowly desaturating shades of green, depending on the mouse's Y position ellipseMode(CORNER); // Set ellipseMode to corner ellipse(280,145,36,36+(-mouseY+400)/30); // Draw an ellipse that lengthens/shortens, depending on the mouse's Y position // Tree 3 fill(0); // Set fill to black stroke(0); // Set stroke to black strokeWeight(3); // Set stroke weight to 3 triangle(350,360,375,360,340,280); // Draw trunk part 1 quad(370,290,350,340,355,350,375,300); // Draw trunk part 2 triangle(370,290,370,300,350,270); // Draw trunk part 3 noStroke(); // Get rid of stroke fill(150-(-mouseY+400)*0.375,110-(-mouseY+400)*0.275,0-(-mouseY+400)); // Set fill to between brown and black triangle(350,360,375,360,340,280); // Draw trunk part 1 quad(370,290,350,340,355,350,375,300); // Draw trunk part 2 triangle(370,290,370,300,350,270); // Draw trunk part 3 stroke(0,0,0,(400-(-mouseY+400))+abs((352.5-mouseX))); // Set stroke to black fill(100+(-mouseY+400)/2,400-(-mouseY+300)/2,100,(400-(-mouseY+400))+abs((352.5-mouseX))); // Set fill to slowly desaturating shades of green, depending on the mouse's Y position ellipseMode(CORNER); // Set ellipseMode to corner ellipse(315,230,75,75+(-mouseY+400)/18); // Draw an ellipse that lengthens/shortens, depending on the mouse's Y position } // Purpose: Executed upon key press void keyPressed(){ // Print a message println("It is the embodiment of famine and disease, born from the neglected groceries of the demons below."); } // Purpose: Executed upon mouse click void mousePressed(){ // Print a message println("The deadorange has come. The crops will wilt, the farmers shall die. This land transformed into a blighted corpse."); }