Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
PVector pos = new PVector(200,200);
PVector velocity = new PVector(1,0);
float damper = 0.99;

void setup() {
  size(600,600);
  fill(255);
}

void draw() {
  background(0);
 
  velocity.mult(damper); // always slow the ball down to simulate resistance 
  pos.add(velocity); // pos + velocity give us our new position! 
   
  // if the ball is above or below the screen, invert the y value of the velocity to send it back where it came from
  if (pos.y<0 || pos.y>height) {
    velocity.y = -velocity.y;
    pos.add(velocity);
  }
   // if the ball is left or right of the screen, invert the x value
  if (pos.x<0 || pos.x>width) {
    velocity.x = -velocity.x;
    pos.add(velocity);
  }
  ellipse(pos.x, pos.y,30,30);
  
  if(mousePressed) {
     // show us our "line of power"
     stroke(255,0,0);
     line(pos.x,pos.y, mouseX,mouseY);
     noStroke();
  }
};

void mouseReleased() {
    // when the mouse is released we give a ball a big push 
    PVector direction = new PVector(mouseX, mouseY);  
    direction.sub(pos);  // by subtracting the pos from mouse coordinates, we end up with a vectore between the two points
    direction.mult(.2);  // we shorten the magnitude to reduce the power of the push
    velocity.set(direction); //now we have our new velocity 
};

...


Exercise:

...

The physics of a car a very different to a planet or a bouncy ball, yet most of the parameters are the same. 

...

 

Modify example 2 to include a gravity force. The ball should fall towards the bottom of the screen, where it will bounce up again.