# arrow2d

Working with 2D vectors made easy!

## Usage no npm install needed!

``````<script type="module">
import arrow2d from 'https://cdn.skypack.dev/arrow2d';
</script>``````

# Arrow2D library # Instalation

Arrow2D is a Node.js module, to install it first download and install Node.js.

Having Node.js and npm installed, simply run:

`npm i arrow2d`

# Quick start

``````const { CreateVector, StaticArrow2D } = require('Arrow2D');

//Create a VectorForm vector.
const vector1 = CreateVector(5, 2);
const vector2 = CreateVector(2, 5);

//Create an ArrayForm vector.
const arrayVector = CreateVector(5, 2, true)
const arrayVector2 = StaticArrow2D.add(vector1, [2, 5]);
``````

# Operations

## normalize()

Normalizes the vector, turning it into a unit vector.

Example

``````const vector = CreateVector(5, 2);
vector.normalize(); // Normalize the vector.
`````` ;

Adds another vector components into the current vector.

Example

``````const vector1 = CreateVector(5, 2);
const vector2 = CreateVector(2, 5);
`````` ;

## sub(vectorToSubtract)

Subtracts another vector components from the current vector.

Example

``````const vector1 = CreateVector(5, 2);
const vector2 = CreateVector(2, 5);
vector1.sub(vector2); // Subtracts vector2 from vector1
`````` ;

## scalarMult(scalar)

Multiplies the current vector components with a scalar.

Example

``````const vector = CreateVector(5, 2);
const scalar = 2;
vector.scalarMult(scalar); // Multiply vector by scalar.
``````

## scalarDiv(scalar)

Divides the current vector components with a scalar.

Example

``````const vector = CreateVector(5, 2);
const scalar = 2;
vector.scalarDiv(scalar); // Divide vector by scalar.
`````` ;

Add the components of two vectors and returns a new one.

Example

``````const vector1 = CreateVector(5, 2);
const vector2 = CreateVectorr(2, 5);
const vector3 = StaticArrow2D.add(vector1, vector2); // Add vectors and return a new one.
`````` ;

## sub(firstVector, secondVector) - STATIC

Static version of sub.

Subtracts the components of two vectors and return a new one.

Example

``````const vector1 = CreateVector(5, 2);
const vector2 = CreateVector(2, 5);
const vector3 = StaticArrow2D.sub(vector1, vector2); // Subtract vectors and return a new one.
`````` ;

## dotProduct(firstVector, secondVector) - STATIC

Returns a scalar value from the dot product of two vectors.

Example

``````const vector1 = CreateVector(5, 2);
const vector2 = CreateVector(2, 5);
const result = StaticArrow2D.dotProduct(vector1, vector2); // Returns a scalar.
``````

## scalarDiv(vector, scalar) - STATIC

Static version of scalarDiv.

Divides a vector by a scalar and returns a new one.

Example

``````const vector1 = CreateVector(5, 2);
const scalar = 2;
const vector3 = StaticArrow2D.scalarDiv(vector1, scalar); // Returns a new vector divided by the scalar.
``````

# Utils

## constrainMagnitude()

Constrain the magnitude of the vector to a value.

Example

``````const vector = CreateVector(5, 2);
vector.constrainMagnitude(3); // Constrains the magnitude of the vector to 3.
``````

Returns the direction the vector is pointing.

Example

``````const vector1 = CreateVector(5, 2);
``````

## rotate(angle)

Rotate the vector by an angle.

Example

``````const vector = CreateVector(5, 2);
vector.rotate(PI/2); // Rotate vector by 90 degrees.
``````

## vectorToArray(vector) - STATIC

Returns the array form of a vector. The operations that take a vector as an input will receive an array instead.

Example

``````const vector = CreateVector(5, 2);
const array = StaticArrow2D.vectorToArray(vector);
``````

## arrayToVector(array) - STATIC

Returns the vector form of an array.

Example

``````const array = [5, 2];
const vector = StaticArrow2D.arrayToVector(array);
``````

## angleBetween(firstVector, secondVector, degrees) - STATIC

Returns the angle, in radians, between two vectors. If you want the angle in degress, set "degress" to true.

Example

``````const vector1 = CreateVector(5, 2);
const vector2 = CreateVector(2, 5);
const angle = StaticArrow2D.angleBetween(vector1, vector2);
``````

## orthogonalVector(vector) - STATIC

Returns an orthogonal vector to the input vector.

Example

``````const vector = CreateVector(5, 2);
const orthogonal = StaticArrow2D.orthogonalVector(vector);
``````