Bouncing Ball

bouncing-ball.pde
/**
 * Bouncing Ball with Vectors
 * by Daniel Shiffman.
 *
 * Demonstration of using vectors to control motion
 * of a body. This example is not object-oriented
 * See AccelerationWithVectors for an example of how
 * to simulate motion using vectors in an object.
 */

PVector location;  // Location of shape
PVector velocity;  // Velocity of shape
PVector gravity;   // Gravity acts at the shape's acceleration

void setup() {
  size(640, 360);
  location = PVector(100, 100);
  velocity = PVector(1.5, 2.1);
  gravity  = PVector(0, 0.2);
}

void draw() {
  background(0);

  // Add velocity to the location.
  location.add(velocity);
  // Add gravity to velocity
  velocity.add(gravity);

  // Bounce off edges
  if ((location.x > width) || (location.x < 0)) {
    velocity.x = velocity.x * -1;
  }
  if (location.y > height) {
    // We're reducing velocity ever so slightly
    // when it hits the bottom of the window
    velocity.y = velocity.y * -0.95;

    location.y = height;
  }

  // Display circle at location vector
  stroke(255);
  strokeWeight(2);
  fill(127);
  ellipse(location.x, location.y, 48, 48);
}