# gl-vec2

> gl-matrix's vec2, split into smaller pieces

Latest version **1.3.0** (published 2018-08-24) · zlib license · 0 weekly downloads

## Install

```sh
npm install gl-vec2
pnpm add gl-vec2
yarn add gl-vec2
bun add gl-vec2
```

## Health

**Score 23/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.0 |
| Published | 2018-08-24 |
| First published | 2014-11-15 |
| Weekly downloads | 0 |
| License | zlib |
| TypeScript types | separate (@types/gl-vec2) |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 22.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 35 |
| Maintainers | alvinsight, chrisdickinson, hughsk, mattdesl, mikkoh, mikolalysenko, rezaali, rreusser, substack, tatumcreative, thibauts, wwwtyro, yoshuawuyts |
| Keywords | gl-matrix, matrix, math, gl, vec2, vec, 2d, vector, maths |

## Links

- npm: https://www.npmjs.com/package/gl-vec2
- Repository: https://github.com/stackgl/gl-vec2
- Issues: https://github.com/stackgl/gl-vec2/issues
- npm.io page: https://npm.io/package/gl-vec2

## Alternatives

- [random-seedable](https://npm.io/package/random-seedable.md) — 27.9K weekly downloads
- [n2words](https://npm.io/package/n2words.md) — 22.2K weekly downloads
- [@stdlib/math-base-special-factorialln](https://npm.io/package/@stdlib/math-base-special-factorialln.md) — 5.7K weekly downloads
- [@stdlib/math-base-special-abs2](https://npm.io/package/@stdlib/math-base-special-abs2.md) — 1.7K weekly downloads
- [commons-math-interpolation](https://npm.io/package/commons-math-interpolation.md) — 1.4K weekly downloads

## Recent versions

- 1.3.0 (latest) — 2018-08-24
- 1.2.0 — 2018-02-05
- 1.1.0 — 2018-02-05
- 1.0.0 — 2014-11-15

## README

# gl-vec2

[![stable](http://badges.github.io/stability-badges/dist/stable.svg)](http://github.com/badges/stability-badges)

Part of a fork of [@toji](http://github.com/toji)'s
[gl-matrix](http://github.com/toji/gl-matrix) split into smaller pieces: this
package contains `glMatrix.vec2`.

## Usage

[![NPM](https://nodei.co/npm/gl-vec2.png)](https://nodei.co/npm/gl-vec2/)

### `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:

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

## API

  - [add()](#addoutvec2-avec2-bvec2)
  - [ceil()](#ceiloutvec2-avec2)
  - [clone()](#cloneavec2)
  - [copy()](#copyoutvec2-avec2)
  - [create()](#create)
  - [cross()](#crossoutvec3-avec2-bvec2)
  - [distance()](#distanceavec2-bvec2)
  - [dist()](#distanceavec2-bvec2)
  - [divide()](#divideoutvec2-avec2-bvec2)
  - [div()](#divideoutvec2-avec2-bvec2)
  - [dot()](#dotavec2-bvec2)
  - [equals()](#equalsavec2-bvec2)
  - [exactEquals()](#exactequalsavec2-bvec2)
  - [floor()](#flooroutvec2-avec2)
  - [forEach()](#foreachaarray-stridenumber-offsetnumber-countnumber-fnfunction-argobject)
  - [fromValues()](#fromvaluesxnumber-ynumber)
  - [inverse()](#inverseoutvec2-avec2)
  - [length()](#lengthavec2)
  - [len()](#lengthavec2)
  - [lerp()](#lerpoutvec2-avec2-bvec2-tnumber)
  - [limit()](#limitoutvec2-avec2-maxnumber)
  - [max()](#maxoutvec2-avec2-bvec2)
  - [min()](#minoutvec2-avec2-bvec2)
  - [multiply()](#multiplyoutvec2-avec2-bvec2)
  - [mul()](#multiplyoutvec2-avec2-bvec2)
  - [negate()](#negateoutvec2-avec2)
  - [normalize()](#normalizeoutvec2-avec2)
  - [random()](#randomoutvec2-scalenumber)
  - [rotate()](#rotateoutvec2-avec2-anglenumber)
  - [round()](#roundoutvec2-avec2)
  - [scale()](#scaleoutvec2-avec2-bnumber)
  - [scaleAndAdd()](#scaleandaddoutvec2-avec2-bvec2-scalenumber)
  - [set()](#setoutvec2-xnumber-ynumber)
  - [squaredDistance()](#squareddistanceavec2-bvec2)
  - [sqrDist()](#squareddistanceavec2-bvec2)
  - [squaredLength()](#squaredlengthavec2)
  - [sqrLen()](#squaredlengthavec2)
  - [subtract()](#subtractoutvec2-avec2-bvec2)
  - [sub()](#subtractoutvec2-avec2-bvec2)
  - [transformMat2()](#transformmat2outvec2-avec2-mmat2)
  - [transformMat2d()](#transformmat2doutvec2-avec2-mmat2d)
  - [transformMat3()](#transformmat3outvec2-avec2-mmat3)
  - [transformMat4()](#transformmat4outvec2-avec2-mmat4)

## add(out:vec2, a:vec2, b:vec2)

  Adds two vec2's

## 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(out:vec2, 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'

## License

[zlib](http://en.wikipedia.org/wiki/Zlib_License). See [LICENSE.md](https://github.com/stackgl/gl-vec2/blob/master/LICENSE.md) for details.

---
_Source: https://npm.io/package/gl-vec2 · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
