kld-affine
Advanced tools
Comparing version 0.0.5 to 0.0.6
@@ -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 @@ * |
@@ -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()); | ||
}; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
26391
1039
96