README
vectors
A grab bag of vector utility functions for 2D and 3D vectors that operate on plain arrays. Much like cog, each method can be required individually to limit the amount of bloat you get from using the module on the client with browserify.
Installation
npm install vectors
Usage
Each method is requireable from vectors/${dims}d/${method}
,
e.g.:
var mag2d = require('vectors/2d/mag')
var add2d = require('vectors/2d/add')
var copy2d = require('vectors/2d/copy')
Each method takes a vec
vector, which if returning a new
vector will almost always do so by modifying it directly:
var spd = [+1, 0]
var acc = [-1, 0]
var cop = copy2d(spd)
mag2d(spd) // 1
add2d(spd, acc) // spd === [0, 0]
mag2d(spd) // 0
mag2d(cop) // 1
3D Vector API
Working on this one...
2D Vector API
add(vec, other)
Adds the other
vector to vec
:
var add = require('vectors/2d/add')
var pos = [0, 0]
var spd = [1, 1.5]
add(pos, spd)
add(pos, spd)
console.log(pos) // [2, 3]
copy(vec)
Returns a copy of the vector vec
:
var copy = require('vectors/2d/copy')
var spd = [5, 5]
var cop = copy(spd)
mult(spd, 100) === [100, 100]
cop === [5, 5]
cross(vec, other)
Returns the cross product of vectors vec
and other
:
var cross = require('vectors/2d/cross')
var a = [1, 2]
var b = [8, 4]
cross(a, b) === -12
dist(vec, other)
Returns the distance between vectors vec
and other
:
var dist = require('vectors/2d/dist')
var pos1 = [2, 4]
var pos2 = [4, 4]
dist(pos1, pos2) === 2
div(vec, scalar)
Divides the vector vec
by a scalar
value:
var div = require('vectors/2d/div')
var spd = [5, 5]
div(spd, 2) === [2.5, 2.5]
dot(vec, other)
Returns the dot product of vectors vec
and other
:
var dot = require('vectors/2d/dot')
var vecA = [15, 5]
var vecB = [10, 8]
dot(vecA, vecB) === 190
heading(vec, other)
Mutliplies the vector vec
by a scalar
value:
var heading = require('vectors/2d/heading')
var a = [5, 0]
var b = [0, 5]
heading(a, b) * 180 / Math.PI === 45 // degrees
lerp(vec, start, finish, scalar)
Set vec
to the linear interpolation between vectors start
and finish
:
var lerp = require('vectors/2d/lerp')
var start = [0, 0]
var finish = [100, 100]
lerp([], start, finish, 0.75) === [75, 75]
limit(vec, scalar)
Limits the vector vec
to a magintude of scalar
units.
var limit = require('vectors/2d/limit')
limit([3, 0], 2) === [2, 0]
limit([3, 4], 1) === [0.6, 0.8]
limit([5, 5], 24) === [5, 5]
mag(vec)
Returns the magnitude of the vector:
var mag = require('vectors/2d/mag')
var spd = [2, 4]
mag(spd) === 4.47213595499958
mult(vec, scalar)
Mutliplies the vector vec
by a scalar
value:
var mult = require('vectors/2d/mult')
var spd = [5, 5]
mult(spd, 2) === [10, 10]
normalize(vec, scalar)
Normalizes the vector (i.e. scales it to make its distance 1 unit).
var normalize = require('vectors/2d/normalize')
normalize([3, 0]) === [1, 0]
normalize([4, 3]) === [0.8, 0.6]
sub(vec, other)
Subtracts the other
vector from vec
:
var sub = require('vectors/2d/sub')
var pos = [0, 0]
var spd = [1, 1.5]
sub(pos, spd)
sub(pos, spd)
console.log(pos) // [-2, -3]