RunKit + Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including gl-vec2 with all npm packages installed. Try it out:

var glVec2 = require("gl-vec2")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

gl-vec2 Part of a fork of @toji's gl-matrix split into smaller pieces: this package contains glMatrix.vec2.

Usage vec2 = require('gl-vec2')

Will load all of the module's functionality and expose it on a single object. Note that any of the methods may also be required directly from their files.

For example, the following are equivalent:

var scale = require('gl-vec2').scale
var scale = require('gl-vec2/scale')

ceil(out:vec2, a:vec2)

Math.ceil the components of a vec2

clone(a:vec2)

Creates a new vec2 initialized with values from an existing vector

copy(out:vec2, a:vec2)

Copy the values from one vec2 to another

create()

Creates a new, empty vec2

cross(out:vec3, a:vec2, b:vec2)

Computes the cross product of two vec2's Note that the cross product must by definition produce a 3D vector

distance(a:vec2, b:vec2)

Calculates the euclidian distance between two vec2's. Aliased as dist.

divide(out:vec2, a:vec2, b:vec2)

Divides two vec2's. Aliased as div.

dot(a:vec2, b:vec2)

Calculates the dot product of two vec2's

equals(a:vec2, b:vec2)

Returns whether or not the vectors have approximately the same elements in the same position.

exactEquals(a:vec2, b:vec2)

Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)

floor(out:vec2, a:vec2)

Math.floor the components of a vec2

forEach(a:Array, stride:Number, offset:Number, count:Number, fn:Function, [arg]:Object)

Perform some operation over an array of vec2s.

fromValues(x:Number, y:Number)

Creates a new vec2 initialized with the given values

inverse(out:vec2, a:vec2)

Returns the inverse of the components of a vec2

length(a:vec2)

Calculates the length of a vec2. Aliased as len.

lerp(out:vec2, a:vec2, b:vec2, t:Number)

Performs a linear interpolation between two vec2's

limit(out:vec2, a:vec2, max:Number)

Limit the magnitude of this vector to the value used for the max parameter

max(out:vec2, a:vec2, b:vec2)

Returns the maximum of two vec2's

min(out:vec2, a:vec2, b:vec2)

Returns the minimum of two vec2's

multiply(out:vec2, a:vec2, b:vec2)

Multiplies two vec2's. Aliased as mul.

negate(out:vec2, a:vec2)

Negates the components of a vec2

Normalize a vec2

random(out:vec2, [scale]:Number)

Generates a random vector with the given scale

round(out:vec2, a:vec2)

Math.round the components of a vec2

rotate(out:vec2, a:vec2, angle:Number)

Rotates a vec2 by an angle (in radians)

scale(out:vec2, a:vec2, b:Number)

Scales a vec2 by a scalar number

scaleAndAdd(out:vec2, a:vec2, b:vec2, scale:Number)

Adds two vec2's after scaling the second operand by a scalar value

set(out:vec2, x:Number, y:Number)

Set the components of a vec2 to the given values

squaredDistance(a:vec2, b:vec2)

Calculates the squared euclidian distance between two vec2's. Aliased as sqrDist.

squaredLength(a:vec2)

Calculates the squared length of a vec2. Aliased as sqrLen.

subtract(out:vec2, a:vec2, b:vec2)

Subtracts vector b from vector a. Aliased as sub.

transformMat2(out:vec2, a:vec2, m:mat2)

Transforms the vec2 with a mat2

transformMat2d(out:vec2, a:vec2, m:mat2d)

Transforms the vec2 with a mat2d

transformMat3(out:vec2, a:vec2, m:mat3)

Transforms the vec2 with a mat3 3rd vector component is implicitly '1'

transformMat4(out:vec2, a:vec2, m:mat4)

Transforms the vec2 with a mat4 3rd vector component is implicitly '0' 4th vector component is implicitly '1'