# What Are Vectors

### What a Vector Is

**Vector** is an overloaded word, context determines its meaning.

In mathematics, **a vector tells us how far to go in a certain direction.**

A vector has two parts, a **length** (or magnitude) and a **direction**.

A vector instructs us to go its **length** in its **direction**.

**Vectors are simple.**

### What a Vector Is Not

Vectors don't do the following:

- Tell us where something is
- Change when we move them (when graphing)

this allows us to visualize the dot product.

### How to Think of Vectors

We think of vectors as instructions for movement.

Let's do an experiment.

Let's consider these instructions:

**Take 3 steps to the right and then 2 steps forward.**

Our instructions could be described as the

**Cartesian vector <3, 2>**.

We could describe it as a

**Polar vector**, but in this experiment Cartesian is easier to use If we apply our vector (we follow the instructions) we would change our positions;

we would end at a different position because we started at different positions.

We can apply our vector as many times as we'd like to further change our position. Vectors don't know or care where the thing that is being moved ends up

### Cartesian Vectors

**Cartesian vectors** are composed of an **x** and **y**.

Cartesian vectors look like this
```
vector v = (6, 4); //or
```

The first number represents horizontal movement, the second represents vertical movement.

vector v = <6, 4>;

// you might also see the numbers vertically stacked between [ ]

// we may see a 3D vector with a z component <6, 4, 7>

This tells us to move **6** steps horizontally and **4** steps vertically.

**Where** are the** length** and **direction**?

**They are baked in.**

We can calculate the length, if needed, by using the distance formula.

We can calculate the direction, if needed, by using trigonometry, for example the **atan** function.

### Polar Vectors

A **Polar vector** directly give us a **length** and **direction (angle)**.

It may look something like this
```
vector p = (4, 120°); //length is 4 and the angle is 120 degrees
```

We have some work to figure how far up and over we need to go, but we know that we will be **4 units** away from where we started and the angle between the points will be **120 degrees**.

We can figure out how far horizontally and vertically we need to go with basic trigonometry.
```
horizontal_dist = cos(120°) * 4;
```

vertical_dist = sin(120°) * 4;

### Cartesian vs Polar

Should we prefer Cartesian or Polar vectors? Depends.

The question is: how are we going to use the vector?

Sometimes one is more convenient than the other, but in the end, they give us the same information in different ways.

### How Are Vectors Used

A few common uses for vectors are:

- Describe an objects movement or potential movement
- Describe which way something is facing (for example a polygon)
- Measure a "force" such as wind

### Difference Between a Vector and a Point

Vectors and points look similar, how are they different.
```
point p = (6, 4); // describes a point in space
```

Points describe a

vector v = <6, 4>; // an instruction to go 6 to the right and 4 up
**position (end point)**, vectors don't describe an end point.

We could apply **vector v** to **point p** and **p** would change to **(12, 8)**.

We could do it again and **p** would change to **(18, 12)**.

### Resources

- Elements of Programming
- Beginning Math and Physics for Game Programmers
- Euclid's Elements (The Thirteen Books)
- From Mathematics to Generic Programming
- Data-oriented design: software engineering for limited resources and short schedules
- Design of Design, The: Essays from a Computer Scientist
- Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition
- More Effective C++: 35 New Ways to Improve Your Programs and Designs
- Mathematics for Machine Learning
- The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition)
- Schaum's Outline of Essential Computer Mathematics 1st Edition
- All recommended resources