-
Notifications
You must be signed in to change notification settings - Fork 1
/
extended-math.js.map
1 lines (1 loc) · 4.14 KB
/
extended-math.js.map
1
{"version":3,"names":[],"mappings":"","sources":["extended-math.js"],"sourcesContent":["(function(global, factory) {\n\ttypeof exports === \"object\" && typeof module !== \"undefined\" ? module.exports = factory() :\n\ttypeof define === \"function\" && define.amd ? define(factory) :\n\t(global.extendedMath = factory());\n} (this, function() {\n\n\t\"use strict\";\n\n\t/**\n\t * @module extendedMath\n\t */\n\tvar extendedMath = { };\n\n\tfunction isInvalidNumber(value) {\n\t\treturn typeof value !== \"number\" || isNaN(value) || value === -Infinity || value === Infinity;\n\t}\n\n\t/**\n\t * A static constant value representing 1/2 of PI.\n\t *\n\t * @name HalfPI\n\t * @constant\n\t * @type number\n\t * @default 1.57079632679489661923\n\t * @memberOf module:extendedMath\n\t */\n\tObject.defineProperty(extendedMath, \"HalfPI\", {\n\t\tvalue: 1.57079632679489661923,\n\t\tenumerable: true\n\t});\n\n\t/**\n\t * A static constant value representing 1/4 of PI.\n\t *\n\t * @name QuarterPI\n\t * @constant\n\t * @type number\n\t * @default 0.78539816339744830962\n\t * @memberOf module:extendedMath\n\t */\n\tObject.defineProperty(extendedMath, \"QuarterPI\", {\n\t\tvalue: 0.78539816339744830962,\n\t\tenumerable: true\n\t});\n\n\t/**\n\t * A static constant value representing 2x PI.\n\t *\n\t * @name TwoPI\n\t * @constant\n\t * @type number\n\t * @default 6.28318530717958647693\n\t * @memberOf module:extendedMath\n\t */\n\tObject.defineProperty(extendedMath, \"TwoPI\", {\n\t\tvalue: 6.28318530717958647693,\n\t\tenumerable: true\n\t});\n\n\t/**\n\t * Clamps a number between a minimum and maximum value.\n\t * +/- Infinity are not valid minimum / maximum values.\n\t *\n\t * @name clamp\n\t * @method\n\t * @param {number} value - The value to clamp.\n\t * @param {number} min - The minimum value to clamp to.\n\t * @param {number} max - The maximum value to clamp to.\n\t * @returns a value which is inclusively adjusted between the specified mimum and maximum values.\n\t * @memberOf module:extendedMath\n\t * @example\n\t * console.log(extendedMath.clamp(3.141592654, -1, 3)); // 3\n\t * console.log(extendedMath.clamp(-1.337, -4.2, 6.9)); // -1.337\n\t * console.log(extendedMath.clamp(-800, -2.8, 1)); // -2.8\n\t * console.log(extendedMath.clamp(1, 2, Infinity)); // NaN\n\t * console.log(extendedMath.clamp(1, -Infinity, 4)); // NaN\n\t * console.log(extendedMath.clamp(Infinity, 0, 1)); // NaN\n\t */\n\textendedMath.clamp = function(value, min, max) {\n\t\treturn isInvalidNumber(value) || isInvalidNumber(min) || isInvalidNumber(max) ? NaN : value < min ? min : value > max ? max : value;\n\t};\n\n\textendedMath.distance = function(a, b) {\n\t\treturn isInvalidNumber(a) || isInvalidNumber(b) ? NaN : Math.abs(b - a);\n\t};\n\n\textendedMath.radiansToDegrees = function(value) {\n\t\treturn isInvalidNumber(value) ? NaN : value * (180 / Math.PI);\n\t};\n\n\textendedMath.degreesToRadians = function(value) {\n\t\treturn isInvalidNumber(value) ? NaN : value * (Math.PI / 180);\n\t};\n\n\textendedMath.compareAnglesDegrees = function(a, b) {\n\t\tif(isInvalidNumber(a) || isInvalidNumber(b)) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\tif(a === b) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar c = a % 360;\n\t\tvar d = b % 360;\n\n\t\tif(c < 0) {\n\t\t\tc += 360;\n\t\t}\n\n\t\tif(d < 0) {\n\t\t\td += 360;\n\t\t}\n\n\t\tif(c === d) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn Math.cos(extendedMath.degreesToRadians(a - b) + (Math.PI / 2)) < 0 ? -1 : 1;\n\t};\n\n\textendedMath.compareAnglesRadians = function(a, b) {\n\t\treturn isInvalidNumber(a) || isInvalidNumber(b) ? NaN : extendedMath.compareAnglesDegrees(extendedMath.radiansToDegrees(a), extendedMath.radiansToDegrees(b));\n\t};\n\n\textendedMath.lerp = function(a, b, amount) {\n\t\tif(isInvalidNumber(a) || isInvalidNumber(b) || isInvalidNumber(amount)) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\tif(amount === 0) {\n\t\t\treturn a;\n\t\t}\n\t\telse if(amount === 1) {\n\t\t\treturn b;\n\t\t}\n\n\t\treturn a + (b - a) * amount;\n\t};\n\n\textendedMath.normalize = function(value, min, max) {\n\t\treturn isInvalidNumber(value) || isInvalidNumber(min) || isInvalidNumber(max) ? NaN : (value - min) / (max - min);\n\t};\n\n\treturn extendedMath;\n\n}));\n"],"file":"extended-math.js"}