File: src/Helpers/math.js
/**
Extension of 'Math' class
@class Math
**/
/**
Calculates the Euclidean distance between two points
var a = [1, 2, 3];
var b = [3, 0, -2];
var c = Math.distance(a, b);
// c ==> 5.744562646538029
@method distance
@for Math
@param {Array} a An n-dimensional point represented by an array
@param {Array} b An n-dimensional point represented by an array
@return {Number} Euclidean distance between a and b
**/
Math.distance = function(a, b) {
return Math.size(b.map(function(c, idx) {
return b[idx] - a[idx];
}));
};
/**
Calculates the magnitude of a vector
var a = [1, 2, 3];
var c = Math.size(a);
// c ==> 3.7416573867739413
@method size
@for Math
@param {Array} a An n-dimensional point represented by an array
@return {Number} The magnitude of a
**/
Math.size = function(a) {
var sum = 0;
for (var i = 0, l = a.length; i < l; i++) {
sum += a[i] * a[i];
}
return Math.sqrt(sum);
};
/**
Calculates the angle from a to b in radians
var a = [3, 0];
var b = [1, 2];
var c = Math.arg(a, b);
// c ==> 2.356194490192345
@method arg
@for Math
@param {Array} a An 2-dimensional point represented by an array
@param {Array} b An 2-dimensional point represented by an array
@return {Number} Angle from a to b in radians
**/
Math.arg = function(a, b) {
return Math.atan2(b[1] - a[1], b[0] - a[0]);
};