# Class: vec2

## vec2

2 Dimensional Vector

## Constructor

Source:

### Methods

#### (static) add(out, a, b) → {vec2}

##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
Source:
out
Type
vec2

#### (static) ceil(out, a) → {vec2}

Math.ceil the components of a vec2
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 vector to ceil
Source:
out
Type
vec2

#### (static) clone(a) → {vec2}

Creates a new vec2 initialized with values from an existing vector
##### Parameters:
Name Type Description
`a` vec2 vector to clone
Source:
a new 2D vector
Type
vec2

#### (static) copy(out, a) → {vec2}

Copy the values from one vec2 to another
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the source vector
Source:
out
Type
vec2

#### (static) create() → {vec2}

Creates a new, empty vec2
Source:
a new 2D vector
Type
vec2

#### (static) cross(out, a, b) → {vec3}

Computes the cross product of two vec2's Note that the cross product must by definition produce a 3D vector
##### Parameters:
Name Type Description
`out` vec3 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
Source:
out
Type
vec3

#### (static) dist()

Alias for vec2.distance
Source:

#### (static) distance(a, b) → {Number}

Calculates the euclidian distance between two vec2's
##### Parameters:
Name Type Description
`a` vec2 the first operand
`b` vec2 the second operand
Source:
##### Returns:
distance between a and b
Type
Number

#### (static) div()

Alias for vec2.divide
Source:

#### (static) divide(out, a, b) → {vec2}

Divides two vec2's
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
Source:
out
Type
vec2

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

Calculates the dot product of two vec2's
##### Parameters:
Name Type Description
`a` vec2 the first operand
`b` vec2 the second operand
Source:
##### Returns:
dot product of a and b
Type
Number

#### (static) equals(a, b) → {Boolean}

Returns whether or not the vectors have approximately the same elements in the same position.
##### Parameters:
Name Type Description
`a` vec2 The first vector.
`b` vec2 The second vector.
Source:
##### Returns:
True if the vectors are equal, false otherwise.
Type
Boolean

#### (static) exactEquals(a, b) → {Boolean}

Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)
##### Parameters:
Name Type Description
`a` vec2 The first vector.
`b` vec2 The second vector.
Source:
##### Returns:
True if the vectors are equal, false otherwise.
Type
Boolean

#### (static) floor(out, a) → {vec2}

Math.floor the components of a vec2
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 vector to floor
Source:
out
Type
vec2

#### (static) forEach(a, stride, offset, count, fn, argopt) → {Array}

Perform some operation over an array of vec2s.
##### Parameters:
Name Type Attributes Description
`a` Array the array of vectors to iterate over
`stride` Number Number of elements between the start of each vec2. If 0 assumes tightly packed
`offset` Number Number of elements to skip at the beginning of the array
`count` Number Number of vec2s to iterate over. If 0 iterates over entire array
`fn` function Function to call for each vector in the array
`arg` Object <optional>
additional argument to pass to fn
Source:
a
Type
Array

#### (static) fromValues(x, y) → {vec2}

Creates a new vec2 initialized with the given values
##### Parameters:
Name Type Description
`x` Number X component
`y` Number Y component
Source:
a new 2D vector
Type
vec2

#### (static) inverse(out, a) → {vec2}

Returns the inverse of the components of a vec2
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 vector to invert
Source:
out
Type
vec2

#### (static) len()

Alias for vec2.length
Source:

#### (static) length(a) → {Number}

Calculates the length of a vec2
##### Parameters:
Name Type Description
`a` vec2 vector to calculate length of
Source:
length of a
Type
Number

#### (static) lerp(out, a, b, t) → {vec2}

Performs a linear interpolation between two vec2's
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
`t` Number interpolation amount between the two inputs
Source:
out
Type
vec2

#### (static) max(out, a, b) → {vec2}

Returns the maximum of two vec2's
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
Source:
out
Type
vec2

#### (static) min(out, a, b) → {vec2}

Returns the minimum of two vec2's
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
Source:
out
Type
vec2

#### (static) mul()

Alias for vec2.multiply
Source:

#### (static) multiply(out, a, b) → {vec2}

Multiplies two vec2's
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
Source:
out
Type
vec2

#### (static) negate(out, a) → {vec2}

Negates the components of a vec2
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 vector to negate
Source:
out
Type
vec2

#### (static) normalize(out, a) → {vec2}

Normalize a vec2
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 vector to normalize
Source:
out
Type
vec2

#### (static) random(out, scaleopt) → {vec2}

Generates a random vector with the given scale
##### Parameters:
Name Type Attributes Description
`out` vec2 the receiving vector
`scale` Number <optional>
Length of the resulting vector. If ommitted, a unit vector will be returned
Source:
out
Type
vec2

#### (static) round(out, a) → {vec2}

Math.round the components of a vec2
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 vector to round
Source:
out
Type
vec2

#### (static) scale(out, a, b) → {vec2}

Scales a vec2 by a scalar number
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the vector to scale
`b` Number amount to scale the vector by
Source:
out
Type
vec2

#### (static) scaleAndAdd(out, a, b, scale) → {vec2}

Adds two vec2's after scaling the second operand by a scalar value
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
`scale` Number the amount to scale b by before adding
Source:
out
Type
vec2

#### (static) set(out, x, y) → {vec2}

Set the components of a vec2 to the given values
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`x` Number X component
`y` Number Y component
Source:
out
Type
vec2

Source:

#### (static) sqrLen()

Alias for vec2.squaredLength
Source:

#### (static) squaredDistance(a, b) → {Number}

Calculates the squared euclidian distance between two vec2's
##### Parameters:
Name Type Description
`a` vec2 the first operand
`b` vec2 the second operand
Source:
##### Returns:
squared distance between a and b
Type
Number

#### (static) squaredLength(a) → {Number}

Calculates the squared length of a vec2
##### Parameters:
Name Type Description
`a` vec2 vector to calculate squared length of
Source:
##### Returns:
squared length of a
Type
Number

#### (static) str(a) → {String}

Returns a string representation of a vector
##### Parameters:
Name Type Description
`a` vec2 vector to represent as a string
Source:
##### Returns:
string representation of the vector
Type
String

#### (static) sub()

Alias for vec2.subtract
Source:

#### (static) subtract(out, a, b) → {vec2}

Subtracts vector b from vector a
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the first operand
`b` vec2 the second operand
Source:
out
Type
vec2

#### (static) transformMat2(out, a, m) → {vec2}

Transforms the vec2 with a mat2
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the vector to transform
`m` mat2 matrix to transform with
Source:
out
Type
vec2

#### (static) transformMat2d(out, a, m) → {vec2}

Transforms the vec2 with a mat2d
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the vector to transform
`m` mat2d matrix to transform with
Source:
out
Type
vec2

#### (static) transformMat3(out, a, m) → {vec2}

Transforms the vec2 with a mat3 3rd vector component is implicitly '1'
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the vector to transform
`m` mat3 matrix to transform with
Source:
out
Type
vec2

#### (static) transformMat4(out, a, m) → {vec2}

Transforms the vec2 with a mat4 3rd vector component is implicitly '0' 4th vector component is implicitly '1'
##### Parameters:
Name Type Description
`out` vec2 the receiving vector
`a` vec2 the vector to transform
`m` mat4 matrix to transform with
Source:
out
Type
vec2