Dish[] dishZ; int count = 30; void setup() { size(800, 800); //create list dishZ = new Dish[count]; //set up dish - Dish (float tempXloc, float tempYloc, float spd) for (int i = 0; i < 15; i++) { dishZ[i] = new Dish( 0, random(0, height/2), random(5) ); } //dish coming from opposite direction for (int i = 15; i < dishZ.length; i++) { dishZ[i] = new Dish( width, random(0, height/2), random(5) ); } } void draw() { background(255); fill(180, 20); rect(0, 0, width, height); if (frameCount < 100) { //15 first dishes coming from the left for (int i = 0; i < 3; i++) { dishZ[i].move(10); dishZ[i].update(); } } if (frameCount > 75) { //15 first dishes coming from the left for (int j = 4; j < 15; j++) { dishZ[j].move(15); dishZ[j].update(); } } if (frameCount > 150) { //the rest come flying from the opposite direciton for (int i = 15; i < dishZ.length; i++) { dishZ[i].move(-20); dishZ[i].update(); } } //img for vid if (frameCount < 201) { saveFrame("images/exer5-######.png"); } else { exit(); } } class Dish { color c = color( random(255), random(255), random(255) ); float moc = width/2; float acc; float locX; float locY; float rev; //dish mechanics setup Dish (float templocX, float templocY, float spd) { locX = templocX; locY = templocY; acc = spd; } //movement mechanics void move(float acc) { //horizontal move locX += acc; //gravity locY += 3; } void update() { push(); translate(locX, locY); rotate(rev); //draw dish //ellipse mode ellipseMode(CENTER); //draw dish fill(c); ellipse(0, 0, 70, 40); ellipse(0, 0, 40, 20); pop(); rev+=PI/4; } }