UNPKG

math-toolbox

Version:

Lightweight and modular math toolbox

3 lines (2 loc) 4.39 kB
// math-toolbox - https://github.com/terkelg/math-toolbox !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.MathToolbox=n.MathToolbox||{})}(this,function(n){"use strict";function t(n,t,r){return Math.min(t,Math.max(n,r))}function r(n){return n<0?0:n>1?1:n}function e(n,t){return t<n?0:1}function o(n,t,r,e,o){return(n-t)/(r-t)*(o-e)+e}function a(n,t){return Math.sqrt(n*n+t*t)}function u(n,t,r,e){var o=n-r,a=t-e;return Math.sqrt(o*o+a*a)}function i(n,t,r){var e=Math.max(0,Math.min(1,(r-n)/(t-n)));return e*e*(3-2*e)}function f(n,t,r){return n+(t-n)*r}function c(n,t,r){return(r-n)/(t-n)}function h(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2;return parseFloat(Math.min(n+Math.random()*(t-n),t).toFixed(r))}function l(n,t){return Math.floor(Math.random()*(t-n+1)+n)}function M(){return Math.random()>.5?1:-1}function d(n,t,r){var e=r-t;if(e<=0)return 0;var o=(n-t)%e;return o<0&&(o+=e),o+t}function p(n){return n*Math.PI/180}function m(n){return 180*n/Math.PI}function s(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-4;return Math.floor(n+t)}function g(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e-4;return Math.ceil(n+t)}function v(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-4;return Math.abs(n-t)<r}function x(n,t){return n>t-(arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-4)}function w(n,t){return n<t+(arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-4)}function y(n,t,r){return Math.min(n+t,r)}function b(n,t,r){return Math.max(n-t,r)}function T(n){return!!(1&n)}function z(n){return!(1&n)}function A(n){return 0!==n&&0==(n&n-1)}function P(n){return Math.pow(2,Math.round(Math.log(n)/Math.log(2)))}function S(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.log(2)))}function D(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return n>t||r>t?1:n<r||r>n?0:(n-r)/t}function O(){for(var n=0,t=arguments.length,r=Array(t),e=0;e<t;e++)r[e]=arguments[e];var o=!0,a=!1,u=void 0;try{for(var i,f=r[Symbol.iterator]();!(o=(i=f.next()).done);o=!0){n+=+i.value}}catch(n){a=!0,u=n}finally{try{!o&&f.return&&f.return()}finally{if(a)throw u}}return n/r.length}function F(n,t){return Math.abs(n-t)}function I(n,t,r){return Math.abs(n-t)<=r}function R(n,t,r){return(r-n)/(t-n)}function q(n,t,r){return r<=0?n:r>=1?t:n+r*(t-n)}function L(n,t){var r=E(t-n,360);return r>180&&(r=Math.abs(r-360)),r}function j(n,t){return p(L(m(n),m(t)))}function C(n){return n-Math.floor(n)}function E(n,t){return(n%t+t)%t}function G(n,t,r){return E(n+f(0,L(n,t),r),360)}function U(n,t,r){return p(G(m(n),m(t),r))}function _(n){return Math.pow(n,2.2)}function k(n){return Math.pow(n,1/2.2)}function B(n,t,r){if(n>t)return n;var e=2*r-t,o=2*t-3*r,a=n/t;return(e*a+o)*a*a+r}function H(n,t){var r=n*t;return r*Math.exp(1-r)}function J(n,t,r){return(r=Math.abs(r-n))>t?0:1-(r/=t)*r*(3-2*r)}function K(n,t,r){return Math.exp(-t*Math.pow(n,r))}function N(n,t){return Math.pow(4*n*(1-n),t)}function Q(n,t,r){return Math.pow(t+r,t+r)/(Math.pow(t,t)*Math.pow(r,r))*Math.pow(n,t)*Math.pow(1-n,r)}function V(n,t,r){var e=Math.exp(-r*n)+Math.exp(-r*t);return-Math.log(e)/r}function W(n,t,r){return Math.log(Math.exp(n)+Math.exp(t))/r}function X(n){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now())-n}function Y(n,t){return 0===t?n:Y(t,n%t)}function Z(n,t,r,e,o,a,u,i){return(r-n)*(u-o)+(e-t)*(i-a)}n.clamp=t,n.clamp01=r,n.step=e,n.map=o,n.diagonal=a,n.distance=u,n.smoothStep=i,n.lerp=f,n.mix=f,n.normalize=c,n.randomFloat=h,n.randomInt=l,n.randomSign=M,n.wrap=d,n.degToRad=p,n.toRadians=p,n.radToDeg=m,n.toDegrees=m,n.fuzzyFloor=s,n.fuzzyCeil=g,n.fuzzyEqual=v,n.fuzzyGreaterThan=x,n.fuzzyLessThan=w,n.maxAdd=y,n.minSub=b,n.isOdd=T,n.isEven=z,n.isPowerOfTwo=A,n.closestPowerOfTwo=P,n.nextPowerOfTwo=S,n.percent01=D,n.average=O,n.difference=F,n.within=I,n.inverseLerp=R,n.inverseMix=R,n.lerpUnclamped=q,n.mixUnclamped=q,n.deltaAngleDeg=L,n.deltaAngle=L,n.deltaAngleRad=j,n.fract=C,n.mod=E,n.lerpAngleDeg=G,n.lerpAngle=G,n.lerpAngleRad=U,n.gammaToLinearSpace=_,n.linearToGammaSpace=k,n.almostIdentity=B,n.impulse=H,n.cubicPulse=J,n.expStep=K,n.parabola=N,n.powerCurve=Q,n.smoothMin=V,n.smoothMax=W,n.deltaTime=X,n.gcd=Y,n.dotProduct=Z,Object.defineProperty(n,"__esModule",{value:!0})});