`Vector`

" called "`Vector2D`

" and "`Vector3D`

",
"`Vector`

" is simply a "`typedef`

" to "`Vector3D`

".Each "

`vector`

" has the appropriate "`x`

", "`y`

" and
"`z`

" variables as public and also a "`valid`

" variable. This
"`valid`

" variable is used to specify simply if the "`vector`

" is valid or not.
It's used a lot internally and externally in some special cases.Note:

`Vector`

" the function applies to both "`Vector2D`

" and "`Vector3D`

"```
Vector::Vector(bool
````v`)

Vector2D::Vector2D(double `nx`, double `ny`)

Vector3D::Vector3D(double `nx`, double `ny`, double `nz`)

void Vector::normalize(void)

double Vector::magnitude(void)

void Vector::full_dump(void) const

Vector rotate(Vector `v`, Vector `axis`, double `angle`)

double dot(Vector `v`, Vector `w`)

Vector cross(Vector `v`, Vector `w`)

`+`

", "`-`

", "`*`

" and "`/`

")
have been overloaded.`Vector::Vector(bool ``v`)

```
This constructor simply sets the initial value of "
````valid`

".

`Vector2D::Vector2D(double ``nx`, double `ny`)

This constructor sets the initial values of "`x`

" and "`y`

".

`Vector3D::Vector3D(double ``nx`, double `ny`, double `nz`)

This constructor sets the initial values of "`x`

", "`y`

" and "`z`

".

`void Vector::normalize(void)`

```
This function adjusts the vector so that it has a length of
````1`

unit. The direction is unaffected.

`double Vector::magnitude(void)`

This function returns the length of the vector.

`void Vector::full_dump(void) const`

```
This function outputs details of the vector to "
````cout`

".

`Vector rotate(Vector ``v`,
Vector `axis`, double `angle`)

This rotates "`" around the axis "`

v`" by "`

axis`" radians. "`

angle`Vector2D`

"'s and "`Vector3D`

"'s cannot be mixed in this function.

`double dot(`

`Vector ``v`,
Vector `w`)

This function finds the dot product of "`" and "`

v`". "`

w`Vector2D`

"'s and "`Vector3D`

"'s cannot be mixed in this function.

`Vector cross(Vector ``v`,
Vector `w`)

This function finds the cross product of "`" and "`

v`". "`

w`Vector2D`

"'s and "`Vector3D`

"'s cannot be mixed in this function.