@tubular/math
Version:
Miscellaneous math functions
31 lines • 14.2 kB
JavaScript
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.tbMath=n():t.tbMath=n()}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),
Object.defineProperty(t,"__esModule",{value:!0})}},n={};t.r(n),t.d(n,{Angle:()=>Gt,FMT_DD:()=>At,FMT_DDD:()=>St,FMT_HH:()=>Et,FMT_MINS:()=>ft,FMT_SECS:()=>Rt,FMT_SIGNED:()=>vt,HALF_PI:()=>It,MinMaxFinder:()=>mt,Mode:()=>gt,PI:()=>dt,SphericalPosition:()=>Ot,SphericalPosition3D:()=>yt,TWO_PI:()=>Nt,Unit:()=>ct,ZeroFinder:()=>pt,abs:()=>e,acos:()=>r,acos_deg:()=>a,acosh:()=>i,acot:()=>s,acot2:()=>h,acot2_deg:()=>u,acot_deg:()=>o,asin:()=>c,asin_deg:()=>l,asinh:()=>g,atan:()=>_,atan2:()=>M,atan2_deg:()=>N,
atan_deg:()=>I,atanh:()=>d,cbrt:()=>A,ceil:()=>E,clz32:()=>S,convertFromRadians:()=>Tt,convertToRadians:()=>xt,cos:()=>f,cos_deg:()=>v,cosh:()=>R,div_rd:()=>T,div_tt0:()=>x,exp:()=>G,expm1:()=>D,floor:()=>m,fround:()=>O,hypot:()=>y,imul:()=>p,interpolate:()=>w,interpolateModular:()=>L,interpolateTabular:()=>P,intersects:()=>U,irandom:()=>F,limitNeg1to1:()=>H,log:()=>V,log10:()=>k,log1p:()=>z,log2:()=>j,max:()=>q,min:()=>Z,mod:()=>X,mod2:()=>Y,pow:()=>W,random:()=>B,round:()=>J,sign:()=>K,signZN:()=>Q,
signZP:()=>$,sin:()=>tt,sin_deg:()=>et,sinh:()=>nt,sqrt:()=>rt,squared:()=>it,tan:()=>at,tan_deg:()=>ht,tanh:()=>st,to_degree:()=>ot,to_radian:()=>ut,trunc:()=>lt,union:()=>Mt});var e=Math.abs,r=Math.acos,i=Math.acosh;function a(t){return Math.acos(t)/Math.PI*180}function s(t){return Math.PI/2-Math.atan(t)}function h(t,n){return Math.PI/2-Math.atan2(t,n)}function o(t){return 180-Math.atan(t)/Math.PI*180}function u(t,n){return 180-Math.atan2(t,n)/Math.PI*180}var c=Math.asin,g=Math.asinh;function l(t){
return Math.asin(t)/Math.PI*180}var _=Math.atan,M=Math.atan2,d=Math.atanh;function I(t){return Math.atan(t)/Math.PI*180}function N(t,n){return Math.atan2(t,n)/Math.PI*180}var A=Math.cbrt;function E(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return 1===n?Math.ceil(t):-(-t-X(-t,n))}var S=Math.clz32,f=Math.cos,R=Math.cosh;function v(t){return Math.cos(t/180*Math.PI)}function x(t,n){var e=t/n;return e>=0?Math.floor(e):Math.ceil(e)}function T(t,n){return Math.floor(t/n)}
var G=Math.exp,D=Math.expm1;function m(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return 1===n?Math.floor(t):t-X(t,n)}var O=Math.fround,y=Math.hypot,p=Math.imul;function w(t,n,e,r,i){return t===e?r:r+(n-t)*(i-r)/(e-t)}function L(t,n,e,r,i,a){var s=arguments.length>6&&void 0!==arguments[6]&&arguments[6],h=a/2;for((r<0||r>=a)&&(r=X(r,a));i<r-h;)i+=a;for(;i>=r+h;)i-=a;var o=w(t,n,e,r,i);return s&&(o<h||o>=h)?o=Y(o,a):(o<0||o>=a)&&(o=X(o,a)),o}function C(t,n,e,r,i){
for(var a=0,s=r;s<=i;++s){for(var h=1,o=r;o<=i;++o)o!==s&&(h*=(e-t[o])/(t[s]-t[o]));a+=h*n[s]}return a}function b(t,n,e,r,i){for(var a=Math.min(t.length,n.length),s=-1,h=a-1,o=0;o<a;++o){var u=t[o];if(s<0&&u>=i-r&&(s=o),u>=i+r){h=o;break}}return C(t,n,e,Math.max(s,0),h)}function P(t,n,e,r){var i=Math.min(t.length,n.length);if(r<=0)return C(t,n,e,0,i-1);for(var a=-1,s=-1,h=0;h<i;++h){var o=t[h];if(o===e)return n[h];if(o<e)a=h;else if(o>e){s=h;break}}if(a<0)return n[0];if(s<0)return n[i-1]
;var u=t[a],c=t[s],g=(e-u)/(c-u);return b(t,n,e,r,u)*(1-g)+b(t,n,e,r,c)*g}function U(t,n){return t.x<n.x+n.w&&t.x+t.w>n.x&&t.y<n.y+n.h&&t.y+t.h>n.y}function F(t,n){return 1===arguments.length?1+Math.floor(Math.random()*t):t+Math.floor(Math.random()*(n-t+1))}function H(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01;return t<-1-n?-1:t>1+n?1:t<-1?-1:t>1?1:t}Math.PI;var V=Math.log,k=Math.log10,z=Math.log1p,j=Math.log2,q=Math.max,Z=Math.min;function X(t,n){var e=t%n
;return e<0&&n>0||e>0&&n<0?n+e:e}function Y(t,n){var e=t-Math.floor(t/n)*n;return e>=n/2&&(e-=n),e}Math.PI;var W=Math.pow;function B(t,n){switch(arguments.length){case 1:return Math.random()*t;case 2:return t+Math.random()*(n-t)}return Math.random()}function J(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return 1===n?Math.round(t):t+n/2-X(t+n/2,n)}var K=Math.sign;function Q(t){return t>0?1:-1}function $(t){return t<0?-1:1}var tt=Math.sin,nt=Math.sinh;function et(t){
return Math.sin(t/180*Math.PI)}var rt=Math.sqrt;function it(t){return t*t}var at=Math.tan,st=Math.tanh;function ht(t){return Math.tan(t/180*Math.PI)}function ot(t){return 180*t/Math.PI}function ut(t){return t*Math.PI/180}var ct,gt,lt=Math.trunc,_t=2*Math.PI;function Mt(t,n){var e=Z(t.x,n.x),r=Z(t.y,n.y);return{x:e,y:r,w:q(t.x+t.w,n.x+n.w)-e,h:q(t.y+t.h,n.y+n.h)-r}}!function(t){t[t.RADIANS=0]="RADIANS",t[t.DEGREES=1]="DEGREES",t[t.ARC_MINUTES=2]="ARC_MINUTES",t[t.ARC_SECONDS=3]="ARC_SECONDS",
t[t.HOURS=4]="HOURS",t[t.HOUR_ANGLE_MINUTES=5]="HOUR_ANGLE_MINUTES",t[t.HOUR_ANGLE_SECONDS=6]="HOUR_ANGLE_SECONDS",t[t.ROTATIONS=7]="ROTATIONS",t[t.GRADS=8]="GRADS"}(ct||(ct={})),function(t){t[t.RANGE_LIMIT_SIGNED=0]="RANGE_LIMIT_SIGNED",t[t.RANGE_LIMIT_NONNEGATIVE=1]="RANGE_LIMIT_NONNEGATIVE",t[t.RANGE_UNLIMITED=2]="RANGE_UNLIMITED"}(gt||(gt={}));var dt=Math.PI,It=dt/2,Nt=2*dt,At=1,Et=1,St=2,ft=4,Rt=8,vt=16;function xt(t,n){switch(n){case ct.RADIANS:return t;case ct.DEGREES:return t/180*dt
;case ct.ARC_MINUTES:return t/10800*dt;case ct.ARC_SECONDS:return t/648e3*dt;case ct.HOURS:return t/12*dt;case ct.HOUR_ANGLE_MINUTES:return t/720*dt;case ct.HOUR_ANGLE_SECONDS:return t/43200*dt;case ct.ROTATIONS:return t*Nt;case ct.GRADS:return t/200*dt}return NaN}function Tt(t,n){switch(n){case ct.RADIANS:return t;case ct.DEGREES:return 180*t/dt;case ct.ARC_MINUTES:return 10800*t/dt;case ct.ARC_SECONDS:return 648e3*t/dt;case ct.HOURS:return 12*t/dt;case ct.HOUR_ANGLE_MINUTES:return 720*t/dt
;case ct.HOUR_ANGLE_SECONDS:return 43200*t/dt;case ct.ROTATIONS:return t/Nt;case ct.GRADS:return 200*t/dt}return NaN}class Gt{constructor(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1?arguments[1]:void 0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:gt.RANGE_LIMIT_SIGNED;this.cached_sin=2,this.cached_cos=2,this.cached_tan=0,void 0===n&&(n=ct.RADIANS),
e===gt.RANGE_LIMIT_SIGNED?this.angle=Y(xt(t,n),Nt):e===gt.RANGE_LIMIT_NONNEGATIVE?this.angle=X(xt(t,n),Nt):this.angle=xt(t,n)}static asin(t){return new Gt(Math.asin(t))}static asin_nonneg(t){return new Gt(Math.asin(t),ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}static acos(t){return new Gt(Math.acos(t))}static atan(t){return new Gt(Math.atan(t))}static atan_nonneg(t){return new Gt(Math.atan(t),ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}static atan2(t,n){return new Gt(Math.atan2(t,n))}static atan2_nonneg(t,n){
return new Gt(Math.atan2(t,n),ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}get radians(){return this.angle}get degrees(){return Tt(this.angle,ct.DEGREES)}get arcMinutes(){return Tt(this.angle,ct.ARC_MINUTES)}get arcSeconds(){return Tt(this.angle,ct.ARC_SECONDS)}get hours(){return Tt(this.angle,ct.HOURS)}get rotations(){return Tt(this.angle,ct.ROTATIONS)}get grads(){return Tt(this.angle,ct.GRADS)}getAngle(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ct.RADIANS;return Tt(this.angle,t)}get sin(){
return this.cached_sin>1&&(this.cached_sin=Math.sin(this.angle)),this.cached_sin}get cos(){return this.cached_cos>1&&(this.cached_cos=Math.cos(this.angle)),this.cached_cos}get tan(){return 0===this.angle?0:(0===this.cached_tan&&(this.cached_tan=Math.tan(this.angle)),this.cached_tan)}add(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:gt.RANGE_LIMIT_SIGNED;return new Gt(this.angle+t.angle,ct.RADIANS,n)}add_nonneg(t){return new Gt(this.angle+t.angle,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}
subtract(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:gt.RANGE_LIMIT_SIGNED;return new Gt(this.angle-t.angle,ct.RADIANS,n)}subtract_nonneg(t){return new Gt(this.angle-t.angle,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}complement(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gt.RANGE_LIMIT_SIGNED;return new Gt(It-this.angle,ct.RADIANS,t)}complement_nonneg(){return new Gt(It-this.angle,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}supplement(){
var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gt.RANGE_LIMIT_SIGNED;return new Gt(dt-this.angle,ct.RADIANS,t)}supplement_nonneg(){return new Gt(dt-this.angle,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}opposite(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gt.RANGE_LIMIT_SIGNED;return new Gt(this.angle+dt,ct.RADIANS,t)}opposite_nonneg(){return new Gt(this.angle+dt,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}negate(){
var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:gt.RANGE_LIMIT_SIGNED;return new Gt(-this.angle,ct.RADIANS,void 0===t?gt.RANGE_UNLIMITED:t)}negate_nonneg(){return new Gt(-this.angle,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}multiply(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:gt.RANGE_LIMIT_SIGNED;return new Gt(this.angle*t,ct.RADIANS,n)}multiply_nonneg(t){return new Gt(this.angle*t,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}divide(t){
var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:gt.RANGE_LIMIT_SIGNED;return new Gt(this.angle/t,ct.RADIANS,n)}divide_nonneg(t){return new Gt(this.angle/t,ct.RADIANS,gt.RANGE_LIMIT_NONNEGATIVE)}toString(t,n){return Gt.toStringAux(this.degrees,"°","'",'"',t,n)}toSuffixedString(t,n,r,i){return Gt.toStringAux(e(this.degrees),"°","'",'"',r,i)+(this.degrees<0?n:t)}toHourString(t,n){return Gt.toStringAux(this.hours,"h","m","s",t,n)}toTimeString(t,n){
return Gt.toStringAux(this.hours,":",t===ft?"":":","",t,n,2)}static toStringAux(t,n,r,i,a,s){var h=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,o=0!=((a=a||0)&(ft|Rt));0!=(a&At)?h=2:0!=(a&St)&&(h=3),null==s&&(s=null!=a&&o?0:3);var u,c=Math.sign(t);if(t=e(t),o){var g=W(10,s);if(0!=(a&ft)){var l=J(60*t*g)/g;u=(t=m(l/60))+n+((l%=60)<10?"0":"")+l.toFixed(s)+r}else{var _=J(3600*t*g)/g,M=m(_/60);_%=60,u=(t=m(M/60))+n+((M%=60)<10?"0":"")+M+r+(_<10?"0":"")+_.toFixed(s)+i}}else u=t.toFixed(s)+n
;if(h)for(var d=h-/^(\d+)\D/.exec(u)[1].length,I=0;I<d;++I)u="0"+u;return c<0?u="-"+u:0!=(a&vt)&&(u="+"+u),u}}Gt.ZERO=new Gt(0),Gt.RIGHT=new Gt(It),Gt.STRAIGHT=new Gt(dt);var Dt=.381966011250105;class mt{constructor(t,n,e,r,i,a){this.minMaxSeekingFunction=t,this.tolerance=n,this.maxIterations=e,this.ax=r,this.bx=i,this.cx=a,this._iterationCount=0,this.isMin=!0}getXAtMinMax(){var t,n,r,i,a,s,h,o,u,c,g,l,_,M,d,I,N=0,A=0,E=1;for(t=this.ax<this.cx?this.ax:this.cx,n=this.ax>this.cx?this.ax:this.cx,
d=M=_=this.bx,this.fx=this.minMaxSeekingFunction(d),this.fx>this.minMaxSeekingFunction(this.ax)?(this.isMin=!1,this.fx*=-1,E=-1):this.isMin=!0,s=a=this.fx,this._iterationCount=0;++this._iterationCount<=this.maxIterations;){if(I=.5*(t+n),g=2*(c=this.tolerance*e(d)+1e-20),e(d-I)<=g-.5*(n-t))return this.fx*=E,d;e(A)>c?(u=(d-M)*(this.fx-a),h=(d-_)*(o=(d-_)*(this.fx-s))-(d-M)*u,(o=2*(o-u))>0&&(h=-h),o=e(o),r=A,A=N,
e(h)>=e(.5*o*r)||h<=o*(t-d)||h>=o*(n-d)?N=Dt*(A=d>=I?t-d:n-d):((l=d+(N=h/o))-t<g||n-l<g)&&(N=Math.sign(I-d)*c)):N=Dt*(A=d>=I?t-d:n-d),l=e(N)>=c?d+N:d+Math.sign(N)*c,(i=E*this.minMaxSeekingFunction(l))<=this.fx?(l>=d?t=d:n=d,_=M,M=d,d=l,a=s,s=this.fx,this.fx=i):(l<d?t=l:n=l,i<=s||M===d?(_=M,M=l,a=s,s=i):(i<=a||_===d||_===M)&&(_=l,a=i))}return this.fx*=E,d}get foundMaximum(){return!this.isMin}get foundMinimum(){return this.isMin}get lastY(){return this.fx}get iterationCount(){return this._iterationCount}}
class Ot{constructor(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ct.RADIANS,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:ct.RADIANS;this._longitude="number"==typeof t?new Gt(t,e,gt.RANGE_LIMIT_NONNEGATIVE):t,this._latitude="number"==typeof n?new Gt(n,r):n}get longitude(){return this._longitude}get rightAscension(){return this._longitude}get altitude(){
return this._latitude}get azimuth(){return this._longitude}get latitude(){return this._latitude}get declination(){return this._latitude}distanceFrom(t){var n=r(H(this._latitude.sin*t._latitude.sin+this._latitude.cos*t._latitude.cos*this._longitude.subtract(t._longitude).cos));return n=e(Y(n,_t)),new Gt(n)}toString(){return"lon: "+this.longitude+", lat: "+this.latitude}}class yt extends Ot{constructor(t,n){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0
;super(t,n,arguments.length>3?arguments[3]:void 0,arguments.length>4?arguments[4]:void 0),this._radius=e}static convertRectangular(t,n,e){var r;if("number"==typeof t){if(r=t,void 0===n||void 0===e)throw new Error("Invalid arguments")}else r=t.x,n=t.y,e=t.z;return new yt(Gt.atan2_nonneg(n,r),Gt.atan2(e,Math.sqrt(r*r+n*n)),Math.sqrt(r*r+n*n+e*e))}static from2D(t,n){return new yt(t.longitude,t.latitude,n)}get radius(){return this._radius}get xyz(){return{x:this._radius*this._latitude.cos*this._longitude.cos,
y:this._radius*this._latitude.cos*this._longitude.sin,z:this._radius*this._latitude.sin}}translate(t){var n=t.longitude,e=t.latitude,r=t.radius,i=this.longitude,a=this.latitude,s=this.radius,h=s*a.cos*i.cos-r*e.cos*n.cos,o=s*a.cos*i.sin-r*e.cos*n.sin,u=s*a.sin-r*e.sin;return yt.convertRectangular(h,o,u)}toString(){return super.toString()+", rad: "+this.radius.toFixed(5)}}class pt{constructor(t,n,e,r,i,a,s){this.zeroSeekingFunction=t,this.tolerance=n,this.maxIterations=e,this.x1=r,this.y1=i,
this._iterationCount=0,null==a?(this.x2=i,this.y1=t(r),this.y2=t(i)):(this.x2=a,this.y2=s)}getXAtZero(){var t;for(this._iterationCount=0;++this._iterationCount<=this.maxIterations&&(t=this.x1-this.y1/(this.y2-this.y1)*(this.x2-this.x1),this.y=this.zeroSeekingFunction(t),!(Math.abs(this.y)<=this.tolerance));)this.y1<this.y2&&this.y<0||this.y1>this.y2&&this.y>0?(this.x1=t,this.y1=this.y):(this.x2=t,this.y2=this.y);return t}get lastY(){return this.y}get iterationCount(){return this._iterationCount}}return n
})()}));
//# sourceMappingURL=index.js.map