/*
Title: Big Ben (London Storm)
Description: It's an overcast day in London, UK.
The sky dulls as the day continues, it's just a regular day in London.
- The mouse can manipulate time, moving it up and down can either move you forward in time, or backwards.
- The mouse also can move the clouds back and forth along the 'x' axis
- Pressing your mouse key causes lightning and thunder to appear (if only I could import sounds)
- Both the clouds and sky will darken as the day goes by, indicating the status of the storm. (As the day continues the storm gets worse)
Creater: Evan Grose
*/
void setup() {
// set size of canvas
size(400, 400);
// set rectMode
rectMode(CORNERS);
ellipseMode(CENTER);
println("It's currently 3am in London, United Kingdom. Drag you mouse down to manipulate the time.");
}
void draw() {
// Blue to dark blue bg
background(mouseY-250, mouseY-150, 255);
// Additional dark blue layer
fill(35, 31, 83, mouseY/2);
rect(0,0,400,400);
// Additional dark blue layer #2
fill(55, 51, 103, mouseY/4);
rect(0,0,400,400);
// Additional grey layer to de-saturate
fill(150, 100);
rect(0,0,400,400);
// Additional white layer to brighten
fill(250, 100-mouseY);
rect(0,0,400,400);
// Additional sky layer to saturate daytime
fill(0, 150, 250, 100-mouseY);
rect(0,0,400,400);
// Additional black layer to darken
fill(20, mouseY/2-100);
rect(0,0,400,400);
// Clouds behind
noStroke();
fill(255-mouseY/4);
ellipse(mouseX-180, (100+6*sin(radians(frameCount)-PI)), 90, 70);
ellipse(mouseX-100, (100+6*sin(radians(frameCount)-PI)), 80, 50);
ellipse(mouseX-140, (100+6*sin(radians(frameCount)-PI))-10, 110, 90);
// Blue slant [top]
strokeWeight(1);
stroke(66, 91, 125);
fill(106, 131, 165);
quad(160, 60, 190, 0, 210, 0, 240, 60);
// Blue slant open [top]
strokeWeight(5);
stroke(66, 91, 125);
line(175, 50, 175, 60);
line(200, 50, 200, 60);
line(225, 50, 225, 60);
line(190, 30, 190, 40);
line(210, 30, 210, 40);
line(200, 10, 200, 20);
strokeWeight(3);
stroke(46, 71, 105);
line(185, 42, 195, 42);
line(205, 42, 215, 42);
line(195, 22, 205, 22);
// Tower base
strokeWeight(1);
stroke(142, 130, 108);
fill(222, 195, 164);
rect(160, 60, 240, 400);
// Tower base 2
strokeWeight(1);
stroke(142, 130, 108);
fill(222, 195, 164);
rect(155, 260, 245, 400);
// Head bottom
strokeWeight(1);
stroke(142, 130, 108);
fill(222, 195, 164);
rect(145, 265, 255, 250);
// Head
strokeWeight(1);
stroke(142, 130, 108);
fill(222, 195, 164);
rect(140, 140, 260, 260);
// Head base - Top open
strokeWeight(5);
stroke(182, 155, 124);
line(170, 90, 170, 100);
line(190, 90, 190, 100);
line(210, 90, 210, 100);
line(230, 90, 230, 100);
line(180, 80, 180, 70);
line(200, 80, 200, 70);
line(220, 80, 220, 70);
strokeWeight(3);
stroke(162, 135, 104);
line(175, 82, 185, 82);
line(195, 82, 205, 82);
line(215, 82, 225, 82);
// Blue slant
strokeWeight(1);
stroke(66, 91, 125);
fill(106, 131, 165);
quad(145, 135, 160, 100, 240, 100, 255, 135);
// Blue slant open
strokeWeight(7);
stroke(66, 91, 125);
line(170, 120, 170, 135);
line(190, 120, 190, 135);
line(210, 120, 210, 135);
line(230, 120, 230, 135);
// Head top
strokeWeight(1);
stroke(142, 130, 108);
fill(222, 195, 164);
rect(145, 135, 255, 140);
// Head white square
strokeWeight(3);
stroke(250);
noFill();
rect(150, 150, 250, 250);
// Clock
noStroke();
fill(255);
ellipse(200, 200, 80, 80);
// Clock dashes
strokeWeight(1);
stroke(0);
line(200, 165, 200, 170);
line(200, 230, 200, 235);
line(165, 200, 170, 200);
line(230, 200, 235, 200);
// Clock hands
strokeWeight(2);
stroke(75);
//line(200, 200, 200, 165);
//200 = The center point
//25 = The amplitude
//mouseY/0.5 = The frequency
//600 = The starting point of the cos/sine wave
line(200+25*cos(radians(mouseY/0.05)-PI-300), (200+25*sin(radians(mouseY/0.05)-PI-300)), 200, 200);
strokeWeight(3);
stroke(75);
//line(200, 200, 210, 185);
line(200+15*cos(radians(mouseY/0.6)-PI-600), (200+15*sin(radians(mouseY/0.6)-PI-600)), 200, 200);
// Clock bracket
noFill();
strokeWeight(2);
stroke(200, 200, 0);
ellipse(200, 200, 4, 4);
// Tower Lines V
strokeWeight(3);
stroke(182, 155, 124);
line(175, 280, 175, 320);
line(200, 280, 200, 320);
line(225, 280, 225, 320);
line(175, 350, 175, 400);
line(200, 350, 200, 400);
line(225, 350, 225, 400);
// Tower Lines H
line(155, 330, 245, 330);
line(155, 340, 245, 340);
// Clouds front
noStroke();
fill(255-mouseY/4);
ellipse(mouseX+120, (150+4*sin(radians(frameCount/1.2)-PI-300)), 90, 70);
ellipse(mouseX+40, (150+4*sin(radians(frameCount/1.2)-PI-300)), 80, 50);
ellipse(mouseX+80, (150+4*sin(radians(frameCount/1.2)-PI-300))-10, 110, 90);
}
void mousePressed() {
// Lightning
noStroke();
fill(255, 255, 0);
rect(0, 0, 400, 400);
println("*Thunderstorm Sounds*");
}