# Acceleration with Vectors

Acceleration with Vectors by Daniel Shiffman.

Demonstration of the basics of motion with vector. A “Mover” object stores location, velocity, and acceleration as vectors The motion is controlled by affecting the acceleration (in this case towards the mouse) * For more examples of simulating motion and physics with vectors, see Simulate/ForcesWithVectors, Simulate/GravitationalAttraction3D

```
// A Mover object
Mover mover;

void setup() {
size(640,360);
mover = new Mover();
}

void draw() {
background(0);

// Update the location
mover.update();
// Display the Mover
mover.display();
}

/**
* Acceleration with Vectors
* by Daniel Shiffman.
*
* Demonstration of the basics of motion with vector.
* A "Mover" object stores location, velocity, and acceleration as vectors
* The motion is controlled by affecting the acceleration (in this case towards the mouse)
*/

class Mover {

// The Mover tracks location, velocity, and acceleration
PVector location;
PVector velocity;
PVector acceleration;
// The Mover's maximum speed
float topspeed;

Mover() {
// Start in the center
location = new PVector(width/2,height/2);
velocity = new PVector(0,0);
topspeed = 5;
}

void update() {

// Compute a vector that points from location to mouse
PVector mouse = new PVector(mouseX,mouseY);
PVector acceleration = PVector.sub(mouse,location);
// Set magnitude of acceleration
acceleration.setMag(0.2);

// Velocity changes according to acceleration
// Limit the velocity by topspeed
velocity.limit(topspeed);
// Location changes by velocity
}

void display() {
stroke(255);
strokeWeight(2);
fill(127);
ellipse(location.x,location.y,48,48);
}

}

```

## Functions Used

fill()

Sets the color used to fill shapes

size()

Defines the dimension of the display window width and height in units of pixels

stroke()

Sets the color used to draw lines and borders around shapes

ellipse()

Draws an ellipse (oval) to the screen

setup()

The setup() function is run once, when the program starts

strokeWeight()

Sets the width of the stroke used for lines, points, and the border around shapes

draw()

Called directly after setup(), the draw() function continuously executes the lines of code contained inside its block until the program is stopped or noLoop() is called