JavaScript Vector Classes for Creative Coding

I have started a small collection of JavaScript Euclidean Vector classes. These are commonly used in creative programming. I wanted a quick way of adding Vectors in to any project that may need them so they’re installable from bower and have a basic set of methods available.

Set up

Currently there is 2 dimensional and 3 dimensional Vectors available. Add references to the files to your project.

Bower

You can install these as a bower dependency

$ bower install js-vector-classes --save

RequireJs

This can be used as a RequireJs dependency. The Vector files will return the JavaScript constructor class. You will just need to point the module name to the corrent location of each file.

require(['Vec2'], function(Vec2){
    var velocity = new Vec2(10, 5);
});

Usage

You can start using this vector by creating a new instance:

var v        = new Vec2(1, 5),
    velocity = new Vec2(10, 5),
    location = new Vec2(250, 100)
;

You can set the properties again using

v.set(x, y)

Maths

You have the following methods available to you.

// Maths
v.plus(Vec2)
v.minus(Vec2)
v.mult(Vec2) // multiply
v.div(Vec2)  // divide
v.mod(Vec2)  // modulus

// helpers
v.inv()      // invert

New Instances

Each of these also have a version which returns a new instance just change the first letter to be uppercase.

v.Plus(Vec2)
v.Minus(Vec2)
// => etc

Helpers

You also have a few helper functions

copy(Vec2)

This copies the properties of another vector in to the current vector.

clone()

This returns a new instance of the current vector with cloned values

equals(Vec2)

This will return true if the properties of the two vectors are equal

distance(Vec2)

This will return the distance between two vectors.

Contributing

Feel free to send pull requests and I’ll review them as soon as I can.

Work with me

Dave is a cohesive team member, widely popular with his colleagues and always inspiring quality, exploration and innovation. One of the true ‘greats’ we’ve had the pleasure to work with

I believe in community, in inspiration and creativity. I believe it's an inspired team and a laser focus on the user's experiece that will produce the best results. I want to help frontend teams live inspired, be productive and scale better.