Node Parcel Merchant

    justmath

    1.0.1 • Public • Published

    JustMath.js - 2D Vector Math

    An implementation of two dimensional vector math including a rich toolset for vector operations. It's also the math library behind eSoccer, a cross-platform multiplayer HTML5 game developed at University of Applied Sciences Bonn.

    JustMath

    • Augments core Math
    • Allows replacement of all methods (e.g. custom implementations of JustMath.sqrt(value))
    • Adds some convenience methods (JustMath.sq(value), JustMath.cot(angle))

    JustMath.Vec2

    • Vector instantiation (new Vec2(vOrX[, y])) and cloning (Vec2#clone())

    • Direct modification through Vec2#x and Vec2#y, also provides getters (Vec2#getX(), Vec2#getY()) and a setter (Vec2#set(vOrX[, y]))

    • Vector addition (Vec2#add(vOrX[, y])), subtraction (Vec2#sub(vOrX[, y])) and multiplication (Vec2#dot(vOrX[, y])))

    • Vector orthogonality (Vec2#ort())

    • Vector normalization (Vec2#norm()), scaling (Vec2#scale(factor)), inversion (Vec2#inv()) and magnitude (Vec2#mag(), Vec2#magSq()) calculation

    • Vector-Vector distances (Vec2#dist(b), Vec2#distSq(b))

    • Vector rotation (Vec2#rot(angle)) and direction calculation (Vec2#dir())

    • Vector projection (Vec2#project(b)) and rejection (Vec2#reject(b))

    • Vector reflection (Vec2#reflect(n)), also with component-wise (projected and rejected component) scaling (Vec2#reflectAndScale(n, projectFactor, rejectFactor))

    • Vector interpolation (Vec2#lerp(p, percent))

    • Vector containment in rectangle (Vec2#inRect(p1, p2))

    • [Vector,Vector] determinant calculation (Vec2.det(v1, v2))

    • Provides Vector#toString and Vector#equals()

    • Provides vector operation chaining, e.g.

      var a = new Vec2(1,2);
      var b = new Vec2(2,1);
      var n = new Vec2(0,1);
      a.clone().sub(b).norm().project(n)...
    • Provides Vec2#toString() for pain-free debugging

    • Is of course able to evaluate Vec2#equals(b)

    • Exports and imports JSON payloads (Vec2#getXY(), new Vec2(jsonPayload))

    • Small allocation footprint when using Vec2#clone() wisely

    • Accepts another Vec2 or plain X and Y coordinates as parameters where possible (e.g. Vec2#add(vOrX[, y]))

    Features

    • CommonJS compatible
    • RequireJS/AMD compatible
    • Shim compatible
    • node.js compatible, also available via npm (npm install justmath)
    • Closure Compiler ADVANCED_OPTIMIZATIONS compatible (fully annotated)
    • Fully documented using jsdoc3
    • Zero dependencies and prerequisites
    • Small footprint

    Usage

    Node.js / CommonJS

    • Install: npm install justmath
    var JustMath = require("justmath"),
        Vec2 = JustMath.Vec2;
    var a = new Vec2(1,2);
    console.log("Not more than "+a.x+""+a.y+", 3.");

    Browser (shim)

    <script src="//raw.github.com/dcodeIO/JustMath.js/master/JustMath.min.js"></script>
    var JustMath = dcodeIO.JustMath,
        Vec2 = JustMath.Vec2;
    var a = new Vec2(1,2);
    alert("Not more than "+a.x+""+a.y+", 3.");

    RequireJS / AMD

    var JustMath = require("/path/to/JustMath.js"),
        Vec2 = JustMath.Vec2;
    var a = new Vec2(1,2);
    alert("Not more than "+a.x+""+a.y+", 3.");

    Downloads

    Documentation

    Examples & Tests Build Status

    License

    Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html

    Keywords

    none

    Install

    npm i justmath

    DownloadsWeekly Downloads

    2

    Version

    1.0.1

    License

    Apache License, Version 2.0

    Last publish

    Collaborators

    • dcode