# utilsvector2

Static utilities for 2d vectors.

Author:
• Collin Hover - collinhover.com
Source:

Map of vectors for 9 directions separated by 45 degrees each.

##### Properties:
Name Type Description
`NONE` Vector2 | Object vector corresponding to no direction
`LEFT` Vector2 | Object vector corresponding to left direction
`RIGHT` Vector2 | Object vector corresponding to right direction
`UP` Vector2 | Object vector corresponding to up direction
`DOWN` Vector2 | Object vector corresponding to down direction
`UPLEFT` Vector2 | Object vector corresponding to up left direction
`UPRIGHT` Vector2 | Object vector corresponding to up right direction
`DOWNLEFT` Vector2 | Object vector corresponding to DOWNLEFT direction
`DOWNRIGHT` Vector2 | Object vector corresponding to down right direction
Source:
See:

#### <static> Q_1 :number

Flag for quadrant 1, -x, -y

Source:
See:

#### <static> Q_2 :number

Flag for quadrant 2, x, -y

Source:
See:

#### <static> Q_3 :number

Flag for quadrant 2, -x, y

Source:
See:

#### <static> Q_4 :number

Flag for quadrant 2, x, y

Source:
See:

#### <static> abs(v) → {Vector2|Object}

Absolutes 2d vector values.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> add(a, b) → {Vector2|Object}

Adds vector source into target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`a` Vector2 | Object vector target
`b` Vector2 | Object vector source
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> addScalar(v, s) → {Vector2|Object}

Add scalar to vector target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector target
`s` Number scalar
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> addVectors(a, b) → {Vector2|Object}

Adds two vectors and creates a new vector.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> centerOfPoints(points) → {Vector2|Object}

Finds center of a set of points.

Parameters:
Name Type Description
`points` Array array of points.
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> clone(v) → {Vector2|Object}

Generates a plain object with properties of a 2d vector by copying another.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> copy(a, b) → {Vector2|Object}

Copies target 2d vector into source. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`a` Vector2 | Object vector target
`b` Vector2 | Object vector source
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> cross(a, b) → {Number}

Gets cross product of two vectors.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Number } cross product

#### <static> crossFV(v, s) → {Number}

Gets cross product of vector and scalar where -s/s.

Parameters:
Name Type Description
`v` Vector2 | Object vector
`s` Number scalar
Source:
Returns:
{ Number } cross product

#### <static> crossVF(v, s) → {Number}

Gets cross product of vector and scalar where s/-s.

Parameters:
Name Type Description
`v` Vector2 | Object vector
`s` Number scalar
Source:
Returns:
{ Number } cross product

#### <static> directionThreshold(v, thresholdX, thresholdY) → {Vector2|Object}

Thresholds a 2d vector. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Argument Default Description
`v` Object vector to convert
`thresholdX` Number <optional>
0 how close to zero direction x can be before becoming 0
`thresholdY` Number <optional>
0 how close to zero direction y can be before becoming 0
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> directionToString(v) → {String}

Converts direction vector to string.

Parameters:
Name Type Description
`v` Vector2 | Object vector to convert
Source:
See:
Returns:
{ String } uppercase string name of closest direction to vector

#### <static> divide(a, b) → {Vector2|Object}

Divides vector source into target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`a` Vector2 | Object vector target
`b` Vector2 | Object vector source
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> divideScalar(v, s) → {Vector2|Object}

Divides scalar into vector target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector target
`s` Number scalar
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> divideVectors(a, b) → {Vector2|Object}

Divides two vectors and creates a new vector.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> dot(a, b) → {Number}

Gets dot product of two vectors.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Number } dot product

#### <static> equal(a, b) → {Boolean}

Checks if 2 vectors are equal.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Boolean } whether vectors are equal

#### <static> inverse(v) → {Vector2|Object}

Inverts 2d vector values. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> isAlmostZero(v) → {Boolean}

Checks 2d vector values to see if *almost* zero, based on ig.CONFIG.PRECISION_ZERO.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
See:
Returns:
{ Boolean } whether vector is almost zero

#### <static> isZero(v) → {Boolean}

Checks 2d vector values to see if zero.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Boolean } whether vector is zero

#### <static> length(v) → {Number}

Gets length of 2d vector.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Number } 2d vector length

#### <static> lengthSquared(v) → {Number}

Gets squared length of 2d vector.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Number } 2d vector length before square root

#### <static> max(a, b) → {Vector2|Object}

Finds the max values of two vectors and creates a new vector.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> min(a, b) → {Vector2|Object}

Finds the min values of two vectors and creates a new vector.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> multiply(a, b) → {Vector2|Object}

Multiplies vector source by target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`a` Vector2 | Object vector target
`b` Vector2 | Object vector source
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> multiplyScalar(v, s) → {Vector2|Object}

Multiplies scalar by vector target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector target
`s` Number scalar
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> multiplyVectors(a, b) → {Vector2|Object}

Multiplies two vectors and creates a new vector.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> normalize(v) → {Vector2|Object}

Normalizes 2d vector.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> pointQuadrant(x, y, originX, originY) → {Number}

Finds the quadrant of a 2D point.

Parameters:
Name Type Description
`x` Number X position
`y` Number Y position
`originX` Number origin x
`originY` Number origin y
Source:
Returns:
{ Number } quadrants bitwise flag

#### <static> pointsCW(p1, p2, p3) → {Number}

Finds if 3 points are clockwise. IMPORTANT: the first point is used as the pivot point.

Parameters:
Name Type Description
`p1` Object point1
`p2` Object point2
`p3` Object point3
Source:
Returns:
{ Number } counter-clockwise if > 0, clockwise if < 0, and collinear if = 0.

#### <static> pointsToConvexHull(points) → {Array}

Creates a convex hull shape from a set of points by Graham Scan in a clockwise direction.

Parameters:
Name Type Description
`points` Array array of points
Source:
Returns:
{ Array } sorted points

#### <static> projectPoints(points, offsetX, offsetY, scaleX, scaleY, angle, angleOffsetX, angleOffsetY) → {Array}

Returns projected points.

Parameters:
Name Type Argument Default Description
`points` Array points to project
`offsetX` Number <optional>
0 x offset.
`offsetY` Number <optional>
0 y offset.
`scaleX` Number <optional>
1 scale x applied before offset.
`scaleY` Number <optional>
1 scale y applied before offset.
`angle` Number <optional>
0 angle to rotate.
`angleOffsetX` Number <optional>
0 angle x offset.
`angleOffsetY` Number <optional>
0 angle y offset.
Source:
Returns:
{ Array } projected points.

#### <static> radianBetweenPoints(a, b, c) → {Number}

Gets signed radian between a and c from b.
- based on http://stackoverflow.com/questions/3486172/angle-between-3-points

Parameters:
Name Type Description
`a` Object 2D point
`b` Object 2D point
`c` Object 2D point
Source:
Returns:

#### <static> rotate(v, angle, originX, originY) → {Vector2|Object}

Rotates a 2d vector.

Parameters:
Name Type Description
`v` Vector2 | Object vector
`angle` Number angle to rotate by
`originX` Number origin x / rotation point
`originY` Number origin y / rotation point
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> set(v, x, y) → {Vector2|Object}

Sets 2d vector values. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
`x` Number x position
`y` Number y position
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> setScalar(v, s) → {Vector2|Object}

Sets 2d vector values from scalar. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
`s` Number scalar
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> subtract(a, b) → {Vector2|Object}

Subtracts vector source from target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`a` Vector2 | Object vector target
`b` Vector2 | Object vector source
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> subtractScalar(v, s) → {Vector2|Object}

Subtracts scalar from vector target. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector target
`s` Number scalar
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> subtractVectors(a, b) → {Vector2|Object}

Subtracts two vectors and creates a new vector.

Parameters:
Name Type Description
`a` Vector2 | Object vector
`b` Vector2 | Object vector
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> vector(x, y, v) → {Vector2|Object}

Generates a plain object with properties of a 2d vector.

Parameters:
Name Type Argument Description
`x` Number <optional>
x position
`y` Number <optional>
y position
`v` Vector2 | Object <optional>
vector object
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector

#### <static> zero(v) → {Vector2|Object}

Zeroes 2d vector values. IMPORTANT:this modifies target vector in place.

Parameters:
Name Type Description
`v` Vector2 | Object vector object or plain object with vector properties
Source:
Returns:
{ Vector2 | Object } 2d vector or plain object with properties of a 2d vector