A ferris wheel standing by the beach:
sketch
//Angela Yang
//Section C
var myFerris;
var mySeat = [];
var angle = 0;
var cloudx=200
var cloudy=50
var clouddx = 1;
var cloudx2 = 100;
var cloudy2 = 200;
var clouddx2 = 0.3;
function setup(){
createCanvas(480, 480);
angleMode(DEGREES);
var bc = color(random(0, 255), random(0, 255), random(0, 255));
myFerris = makeFerris(240+180, 230, 0.3, 330);
for(var i = 0; i<6; i++){
var bc = color(random(0, 255), random(0, 255), random(0, 255));
mySeat[i] = makeSeat(200, 200, 20, bc, i);
}
}
function updateFerris(){
this.angle += this.angleSpeed;
}
function ferrisDraw(){
push();
noFill();
strokeWeight(4);
ellipse(this.x, this.y, this.r, this.r);
pop();
push();
stroke(255);
strokeWeight(8);
line(this.x, this.y, this.x-80, height);
line(this.x, this.y, this.x+80, height);
pop();
push();
translate(this.x, this.y);
for(var i = 0; i<6; i++){
push();
rotate(i*60 + this.angle);
stroke(255);
strokeWeight(3);
line(0, 0, this.r/2, 0);
pop();
}
pop();
}
function makeFerris(wx, wy, as, wr){
var wheel = {x:wx, y:wy, angleSpeed:as, r:wr, angle:0,
update: updateFerris,
draw: ferrisDraw};
return wheel;
}
function updateSeat(){
this.x = myFerris.x + myFerris.r/2*cos(this.index*60 + myFerris.angle);
this.y = myFerris.y + myFerris.r/2*sin(this.index*60 + myFerris.angle);
}
function seatDraw(){
push();
stroke(255);
strokeWeight(2);
line(this.x, this.y, this.x, this.y+10);
pop();
push();
stroke(255);
fill(this.c);
rect(this.x-10, this.y+10, 25, 25);
pop();
}
function makeSeat(bx, by, br, bc, seatIndex){
var basket = {x:bx, y:by, r:br, c:bc, index:seatIndex,
update: updateSeat,
draw: seatDraw};
return basket;
}
function draw(){
background(240,145,110);
//Ground
push();
fill(87,71,70);
rect(0, 350, width, 130);
noStroke();
fill(60,40,20,255);
rect(0, 350, width, 30);
pop();
//Trees
push();
noStroke();
fill(30,63,79);
triangle(80, 240, 0, 350, 160, 350);
fill(43,96,119);
triangle(330, 235, 245, 350, 450, 350);
fill(61,118,127);
triangle(240, 235, 220, 360, 350, 360);
fill(84,149,132);
triangle(400, 250, 280, 360, 530, 360);
fill(100,200,200);
triangle(150, 150, 50, 380, 280, 380);
pop();
//Clouds
push();
noStroke();
fill(255);
ellipse(cloudx, cloudy, 80, 40);
ellipse(cloudx+20, cloudy+20, 90, 30);
ellipse(cloudx-35, cloudy+20, 80, 45);
cloudx+=clouddx;
if(cloudx-80>=width){
cloudx = -120;
}
ellipse(cloudx2, cloudy2, 90, 30);
ellipse(cloudx2+30, cloudy2+20, 70, 25);
ellipse(cloudx2-20, cloudy2+20, 80, 30);
cloudx2+=clouddx2;
if(cloudx2-80>=width){
cloudx2 = -120;
}
pop();
//Lake
push();
noStroke();
fill(150);
ellipse(0, 530, width+500, 280);
fill(235, 239, 229);
ellipse(0, 530, width+400, 250);
pop();
myFerris.draw();
myFerris.update();
for(var i = 0; i<6; i++){
mySeat[i].draw();
mySeat[i].update();
}
}