Socket
Socket
Sign inDemoInstall

kld-affine

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

kld-affine - npm Package Compare versions

Comparing version 0.0.5 to 0.0.6

130

lib/Matrix2D.js

@@ -21,11 +21,20 @@ /**

function Matrix2D(a, b, c, d, e, f) {
this.a = a || 1;
this.b = b || 0;
this.c = c || 0;
this.d = d || 1;
this.e = e || 0;
this.f = f || 0;
this.a = (a !== undefined) ? a : 1;
this.b = (b !== undefined) ? b : 0;
this.c = (c !== undefined) ? c : 0;
this.d = (d !== undefined) ? d : 1;
this.e = (e !== undefined) ? e : 0;
this.f = (f !== undefined) ? f : 0;
}
/**
* Identity matrix
*
* @returns {Matrix2D}
*/
Matrix2D.IDENTITY = new Matrix2D(1, 0, 0, 1, 0, 0);
// TODO: rotate, skew, etc. matrices as well?
/**
* multiply

@@ -50,3 +59,3 @@ *

*
* @returns {Natrix2D}
* @returns {Matrix2D}
*/

@@ -109,2 +118,23 @@ Matrix2D.prototype.inverse = function() {

/**
* scaleAt
*
* @param {Number} scale
* @param {Point2D} center
* @returns {Matrix2D}
*/
Matrix2D.prototype.scaleAt = function(scale, center) {
var dx = center.x - scale * center.x;
var dy = center.y - scale * center.y;
return new Matrix2D(
this.a * scale,
this.b * scale,
this.c * scale,
this.d * scale,
this.a * dx + this.c * dy + this.e,
this.b * dx + this.d * dy + this.f
);
};
/**
* scaleNonUniform

@@ -128,2 +158,24 @@ *

/**
* scaleNonUniformAt
*
* @param {Number} scaleX
* @param {Number} scaleY
* @param {Point2D} center
* @returns {Matrix2D}
*/
Matrix2D.prototype.scaleNonUniformAt = function(scaleX, scaleY, center) {
var dx = center.x - scaleX * center.x;
var dy = center.y - scaleY * center.y;
return new Matrix2D(
this.a * scaleX,
this.b * scaleX,
this.c * scaleY,
this.d * scaleY,
this.a * dx + this.c * dy + this.e,
this.b * dx + this.d * dy + this.f
);
};
/**
* rotate

@@ -149,2 +201,25 @@ *

/**
* rotateAt
*
* @param {Number} radians
* @param {Point2D} center
* @result {Matrix2D}
*/
Matrix2D.prototype.rotateAt = function(radians, center) {
var c = Math.cos(radians);
var s = Math.sin(radians);
var t1 = -center.x + center.x * c - center.y * s;
var t2 = -center.y + center.y * c + center.x * s;
return new Matrix2D(
this.a * c + this.c * s,
this.b * c + this.d * s,
this.a * -s + this.c * c,
this.b * -s + this.d * c,
this.a * t1 + this.c * t2 + this.e,
this.b * t1 + this.d * t2 + this.f
);
};
/**
* rotateFromVector

@@ -221,2 +296,4 @@ *

// TODO: skewXAt
/**

@@ -241,3 +318,30 @@ * skewY

// TODO: skewYAt
/**
* isIdentity
*
* @returns {Boolean}
*/
Matrix2D.prototype.isIdentity = function() {
return (
this.a === 1.0 &&
this.b === 0.0 &&
this.c === 0.0 &&
this.d === 1.0 &&
this.e === 0.0 &&
this.f === 0.0
);
};
/**
* isInvertible
*
* @returns {Boolean}
*/
Matrix2D.prototype.isInvertible = function() {
this.a * this.d - this.b * this.c !== 0.0;
};
/**
* equals

@@ -260,2 +364,14 @@ *

/**
* getScale
*
* @returns {scaleX: Number, scaleY: Number}
*/
Matrix2D.prototype.getScale = function() {
return {
scaleX: Math.sqrt(this.a * this.a + this.c * this.c),
scaleY: Math.sqrt(this.b * this.b + this.d * this.d)
};
};
/**
* toString

@@ -262,0 +378,0 @@ *

53

lib/Point2D.js

@@ -21,3 +21,2 @@ /**

/**

@@ -32,7 +31,6 @@ * clone

/**
* add
*
* @param {Point2D} that
* @param {Point2D|Vector2D} that
* @returns {Point2D}

@@ -44,7 +42,7 @@ */

/**
* addEquals
*
* @param {Point2D} that
* @deprecated
* @param {Point2D|Vector2D} that
* @returns {Point2D}

@@ -62,2 +60,3 @@ */

*
* @deprecated
* @param {Number} dx

@@ -71,6 +70,6 @@ * @param {Number} dy

/**
* scalarAdd
*
* @deprecated
* @param {Number} scalar

@@ -83,6 +82,6 @@ * @returns {Point2D}

/**
* scalarAddEquals
*
* @deprecated
* @param {Number} scalar

@@ -98,7 +97,7 @@ * @returns {Point2D}

/**
* subtract
*
* @param {Point2D} that
* @param { Vector2D | Point2D } that
* @returns {Point2D}
*/

@@ -109,7 +108,7 @@ Point2D.prototype.subtract = function(that) {

/**
* subtractEquals
*
* @param {Point2D} that
* @deprecated
* @param { Vector2D | Point2D } that
* @returns {Point2D}

@@ -124,6 +123,6 @@ */

/**
* scalarSubtract
*
* @deprecated
* @param {Number} scalar

@@ -136,6 +135,6 @@ * @rertuns {Point2D}

/**
* scalarSubtractEquals
*
* @deprecated
* @param {Number}

@@ -151,3 +150,2 @@ * @returns {Point2D}

/**

@@ -163,6 +161,6 @@ * multiply

/**
* multiplyEquals
*
* @deprecated
* @param {Number} scalar

@@ -178,3 +176,2 @@ * @returns {Point2D}

/**

@@ -190,6 +187,6 @@ * divide

/**
* divideEquals
*
* @deprecated
* @param {Number} scalar

@@ -208,2 +205,3 @@ * @returns {Point2D}

*
* @deprecated
* @param {Point2D} that

@@ -216,3 +214,2 @@ * @returns {Integer}

/**

@@ -233,3 +230,3 @@ * equals

*
* @param {Point2D} that
* @param { Vector2D | Point2D } that
* @param {Number} t

@@ -239,9 +236,10 @@ @ @returns {Point2D}

Point2D.prototype.lerp = function(that, t) {
var omt = 1.0 - t;
return new Point2D(
this.x + (that.x - this.x) * t,
this.y + (that.y - this.y) * t
this.x * omt + that.x * t,
this.y * omt + that.y * t
);
};
/**

@@ -260,3 +258,2 @@ * distanceFrom

/**

@@ -275,3 +272,2 @@ * min

/**

@@ -290,3 +286,2 @@ * max

/**

@@ -305,3 +300,2 @@ * transform

/**

@@ -313,3 +307,3 @@ * toString

Point2D.prototype.toString = function() {
return this.x + "," + this.y;
return "point(" + this.x + "," + this.y + ")";
};

@@ -323,2 +317,3 @@

*
* @deprecated
* @param {Number} x

@@ -332,6 +327,6 @@ * @param {Number} y

/**
* setFromPoint
*
* @deprecated
* @param {Point2D} that

@@ -344,6 +339,6 @@ */

/**
* swap
*
* @deprecated
* @param {Point2D}

@@ -350,0 +345,0 @@ */

@@ -21,3 +21,2 @@ /**

/**

@@ -32,3 +31,2 @@ * length

/**

@@ -44,3 +42,2 @@ * dot

/**

@@ -56,3 +53,2 @@ * cross

/**

@@ -67,6 +63,6 @@ * unit

/**
* unitEquals
*
* @deprecated
* @returns {Vector2D}

@@ -80,3 +76,2 @@ */

/**

@@ -92,6 +87,6 @@ * add

/**
* addEquals
*
* @deprecated
* @param {Vector2D} that

@@ -107,3 +102,2 @@ * @returns {Vector2D}

/**

@@ -119,6 +113,6 @@ * subtract

/**
* subtractEquals
*
* @deprecated
* @param {Vector2D} that

@@ -134,3 +128,2 @@ * @returns {Vector2D}

/**

@@ -146,6 +139,6 @@ * multiply

/**
* multiplyEquals
*
* @deprecated
* @param {Number} scalar

@@ -161,3 +154,2 @@ * @returns {Vector2D}

/**

@@ -173,6 +165,6 @@ * divide

/**
* divideEquals
*
* @deprecated
* @param {Number} scalar

@@ -188,5 +180,4 @@ * @returns {Vector2D}

/**
* perp
* Find a vector is that is perpendicular to this vector
*

@@ -199,5 +190,5 @@ * @returns {Vector2D}

/**
* perpendicular
* Find the component of the specified vector that is perpendicular to
* this vector
*

@@ -211,3 +202,2 @@ * @param {Vector2D} that

/**

@@ -225,3 +215,2 @@ * project

/**

@@ -262,3 +251,2 @@ * transform

/**

@@ -265,0 +253,0 @@ * fromPoints

{
"name": "kld-affine",
"version": "0.0.5",
"description": "A collection of classes used with affine geometry",
"version": "0.0.6",
"description": "A collection of classes used in affine geometry",
"author": {

@@ -6,0 +6,0 @@ "name": "Kevin Lindsey",

@@ -25,7 +25,7 @@ kld-affine

* rmoveTo - deprecated
* scalarAdd
* scalarAdd - deprecated
* scalarAddEquals - deprecated
* subtract
* subtractEquals - deprecated
* scalarSubtract
* scalarSubtract - deprecated
* scalarSubtractEquals - deprecated

@@ -36,3 +36,3 @@ * multiply

* divideEquals - deprecated
* compare
* compare - deprecated
* equals

@@ -53,2 +53,3 @@ * lerp

* Vector2D.fromPoints
* length

@@ -73,3 +74,2 @@ * dot

* toString
* Vector2D.fromPoints

@@ -80,2 +80,3 @@ Matrix2D

* Matrix2D.IDENTITY
* multiply

@@ -85,4 +86,7 @@ * inverse

* scale
* scaleAt
* scaleNonUniform
* scaleNonUniformAt
* rotate
* rotateAt
* rotateFromVector

@@ -94,2 +98,5 @@ * flipX

* equals
* isIdentity
* isInvertible
* getScale
* toString

@@ -1,2 +0,4 @@

var Point2D = require('../lib/Point2D');
var Point2D = require('../lib/Point2D'),
Vector2D = require('../lib/Vector2D'),
Matrix2D = require('../lib/Matrix2D');

@@ -9,1 +11,195 @@ exports.newPoint = function(beforeExit, assert) {

};
exports.clone = function(beforeExit, assert) {
var p = new Point2D(10, 20);
var c = p.clone();
assert.equal(p.x, c.x);
assert.equal(p.y, c.y);
assert.equal(c.x, 10);
assert.equal(c.y, 20);
};
exports.addPoint = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var p2 = new Point2D(20, 30);
var p3 = p1.add(p2);
assert.equal(p3.x, 30);
assert.equal(p3.y, 50);
};
exports.addVector = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var v1 = new Vector2D(20, 30);
var p2 = p1.add(v1);
assert.equal(p2.x, 30);
assert.equal(p2.y, 50);
};
exports.subtractPoint = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var p2 = new Point2D(20, 40);
var p3 = p1.subtract(p2);
assert.equal(p3.x, -10);
assert.equal(p3.y, -20);
};
exports.subtractVector = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var v1 = new Vector2D(20, 40);
var p2 = p1.subtract(v1);
assert.equal(p2.x, -10);
assert.equal(p2.y, -20);
};
exports.multiply = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var p2 = p1.multiply(0.5);
assert.equal(p2.x, 5);
assert.equal(p2.y, 10);
};
exports.divide = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var p2 = p1.divide(2);
assert.equal(p2.x, 5);
assert.equal(p2.y, 10);
};
exports.equals = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var p2 = new Point2D(10, 20);
var p3 = new Point2D(10, 21);
assert.equal(p1.equals(p2), true);
assert.equal(p1.equals(p3), false);
};
exports.lerpPoint = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var p2 = new Point2D(30, 40);
var p3 = p1.lerp(p2, 0.25);
assert.equal(p3.x, 15);
assert.equal(p3.y, 25);
};
exports.lerpVector = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var v1 = new Vector2D(30, 40);
var p2 = p1.lerp(v1, 0.25);
assert.equal(p2.x, 15);
assert.equal(p2.y, 25);
};
exports.distanceFrom = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var p2 = new Point2D(13, 24);
var dist = p1.distanceFrom(p2);
assert.equal(dist, 5);
};
exports.min = function(beforeExit, assert) {
var p1 = new Point2D(30, 5);
var p2 = new Point2D(10, 50);
var p3 = p1.min(p2);
assert.equal(p3.x, 10);
assert.equal(p3.y, 5);
};
exports.max = function(beforeExit, assert) {
var p1 = new Point2D(30, 5);
var p2 = new Point2D(10, 50);
var p3 = p1.max(p2);
assert.equal(p3.x, 30);
assert.equal(p3.y, 50);
};
exports.translateTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var m = new Matrix2D().translate(20, 30);
var p2 = p1.transform(m);
assert.equal(p2.x, 30);
assert.equal(p2.y, 50);
};
exports.scaleTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var m = new Matrix2D().scale(2);
var p2 = p1.transform(m);
assert.equal(p2.x, 20);
assert.equal(p2.y, 40);
};
exports.scaleNonUniformTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var m = new Matrix2D().scaleNonUniform(2, 3);
var p2 = p1.transform(m);
assert.equal(p2.x, 20);
assert.equal(p2.y, 60);
};
exports.rotateTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 0);
var m = new Matrix2D().rotate(Math.PI / 4.0);
var p2 = p1.transform(m);
assert.equal(p2.x, 7.0710678118654755);
assert.equal(p2.y, 7.071067811865475);
};
exports.rotateFromVectorTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 0);
var v = new Vector2D(Math.PI / 4.0, Math.PI / 4.0)
var m = new Matrix2D().rotateFromVector(v);
var p2 = p1.transform(m);
assert.equal(p2.x, 7.0710678118654755);
assert.equal(p2.y, 7.0710678118654755);
};
exports.flipXTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var m = new Matrix2D().flipX();
var p2 = p1.transform(m);
assert.equal(p2.x, -10);
assert.equal(p2.y, 20);
};
exports.flipYTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var m = new Matrix2D().flipY();
var p2 = p1.transform(m);
assert.equal(p2.x, 10);
assert.equal(p2.y, -20);
};
exports.inverseTransform = function(beforeExit, assert) {
var p1 = new Point2D(10, 20);
var m = new Matrix2D().translate(30, 50).inverse();
var p2 = p1.transform(m);
assert.equal(p2.x, -20);
assert.equal(p2.y, -30);
};
exports.toString = function(beforeExit, assert) {
var p = new Point2D(10, 20);
assert.equal("point(10,20)", p.toString());
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc