# vectorz

a 2d/3d vector library inspired by Unity

## Installation

npm install vectorz

## Usage

Require either "vectorz/2d", "vectorz/3d", or just "vectorz" for both.

Call the constructor with or without the `new`

keyword. Both return a new Vector2 or Vector3 instance.

All operations return new copies instead of mutation, and they're available in three forms: standalone, instance, or composable.

Vector2Vector2comp

Composable forms are particularly useful with functors:

==

## Available operations

**add(other)**

Returns a new vector by adding two vectors' corresponding components together.

**sub(other)**

Returns a new vector by subtracting two vectors' corresponding components from each other.

**multiply(other)**

Returns a new vector by multiplying two vectors' corresponding components together.

**divide(other)**

Returns a new vector by dividing two vectors' corresponding components.

**magnitude()**

Returns the length of a vector.

**scale(scalar)**

Multiplies vector a vector by a scalar.

**normalize()**

Returns a vector with the same direction, but length of 1. Same as `.clamp(1)`

.

**dot(other)**

Returns the dot product of two vectors.

**angle(other)**

Returns the angle in radians between two vectors.

**angleDeg(other)**

Returns the angle in degrees between two vectors.

**distance(other)**

Returns the distance between two vectors. Same as `.minus(other).magnitude()`

.

**clamp(magnitude)**

Returns a vector with the same direction, but specified length.

**limit(magnitude)**

Limits the vector's length to a maximum of `magnitude`

.

**toArray()**

Returns the vector components in an array.

**toObject()**

Returns the vector as a plain Javascript object.