better-suncalc
Version:
A tiny TypeScript library for calculating sun/moon positions and phases.
2 lines • 5.15 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["better-suncalc"]=t():e["better-suncalc"]=t()}(this,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{addTime:()=>k,altitude:()=>T,approxTransit:()=>A,astroRefraction:()=>C,azimuth:()=>w,declination:()=>y,eclipticLongitude:()=>j,fromJulian:()=>g,getEquinoxes:()=>Q,getMoonIllumination:()=>q,getMoonPosition:()=>z,getMoonTimes:()=>I,getPosition:()=>O,getSetJ:()=>H,getSolstices:()=>R,getTimes:()=>J,hourAngle:()=>F,hoursLater:()=>b,julianCycle:()=>x,moonCoords:()=>Y,rightAscension:()=>M,siderealTime:()=>D,solarMeanAnomaly:()=>U,solarTransitJ:()=>E,sunCoords:()=>S,toDays:()=>p,toJulian:()=>m});var n=Math.PI,r=Math.sin,a=Math.cos,u=Math.tan,o=Math.asin,i=Math.acos,c=Math.atan2,s=n/180,d=864e5,f=2440588,l=2451545,v=23.4397*s,h=9e-4;function m(e){return e.valueOf()/d-.5+f}function g(e){return new Date((e+.5-f)*d)}function p(e){return m(e)-l}function b(e,t){return new Date(e.valueOf()+t*d/24)}function M(e,t){return c(r(e)*a(v)-u(t)*r(v),a(e))}function y(e,t){return o(r(t)*a(v)+a(t)*r(v)*r(e))}function w(e,t,n){return c(r(e),a(e)*r(t)-u(n)*a(t))}function T(e,t,n){return o(r(t)*r(n)+a(t)*a(n)*a(e))}function D(e,t){return s*(280.16+360.9856235*e)-t}function C(e){return e<0&&(e=0),2967e-7/Math.tan(e+.00312536/(e+.08901179))}function U(e){return s*(357.5291+.98560028*e)}function j(e){return e+s*(1.9148*r(e)+.02*r(2*e)+3e-4*r(3*e))+102.9372*s+n}function S(e){var t=j(U(e));return{dec:y(t,0),ra:M(t,0)}}function O(e,t,n){var r=s*-n,a=s*t,u=p(e),o=S(u),i=D(u,r)-o.ra;return{azimuth:w(i,a,o.dec),altitude:T(i,a,o.dec)}}var P=[[-.833,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];function k(e,t,n){P.push([e,t,n])}function x(e,t){return Math.round(e-h-t/(2*n))}function A(e,t,r){return h+(e+t)/(2*n)+r}function E(e,t,n){return l+e+.0053*r(t)-.0069*r(2*n)}function F(e,t,n){var u=(r(e)-r(t)*r(n))/(a(t)*a(n));return i(u)}function H(e,t,n,r,a,u,o){return E(A(F(e,n,r),t,a),u,o)}function J(e,t,n){for(var r=s*-n,a=s*t,u=x(p(e),r),o=A(0,r,u),i=U(o),c=j(i),d=y(c,0),f=E(o,i,c),l={solarNoon:g(f),nadir:g(f+.5)},v=0;v<P.length;v++){var h=P[v],m=H(h[0]*s,r,a,d,u,i,c),b=f-(m-f);l[h[1]]=g(b),l[h[2]]=g(m)}return l}function Y(e){var t=s*(134.963+13.064993*e),n=s*(93.272+13.22935*e),u=s*(218.316+13.176396*e)+6.289*s*r(t),o=5.128*s*r(n),i=385001-20905*a(t);return{ra:M(u,o),dec:y(u,o),dist:i}}function z(e,t,n){var o=s*-n,i=s*t,d=p(e),f=Y(d),l=D(d,o)-f.ra,v=T(l,i,f.dec),h=c(r(l),u(i)*a(f.dec)-r(f.dec)*a(l));return v+=C(v),{azimuth:w(l,i,f.dec),altitude:v,distance:f.dist,parallacticAngle:h}}function q(e){var t=p(e),u=S(t),o=Y(t),s=149598e3,d=i(r(u.dec)*r(o.dec)+a(u.dec)*a(o.dec)*a(u.ra-o.ra)),f=c(s*r(d),o.dist-s*a(d)),l=c(a(u.dec)*r(u.ra-o.ra),r(u.dec)*a(o.dec)-a(u.dec)*r(o.dec)*a(u.ra-o.ra));return{fraction:(1+a(f))/2,phase:.5+.5*f*(l<0?-1:1)/n,angle:l}}function I(e,t,n,r){var a=new Date(e);r?a.setUTCHours(0,0,0,0):a.setHours(0,0,0,0);for(var u,o,i=.133*s,c=z(a,t,n).altitude-i,d=0,f=1;f<=24;f+=2){var l=z(b(a,f),t,n).altitude-i,v=z(b(a,f+1),t,n).altitude-i,h=(c+v)/2-l,m=(v-c)/2,g=-m/(2*h);d=(h*g+m)*g+l;var p=m*m-4*h*l,M=0,y=0,w=0;if(p>=0){var T=Math.sqrt(p)/(2*Math.abs(h));y=g-T,w=g+T,Math.abs(y)<=1&&M++,Math.abs(w)<=1&&M++,y<-1&&(y=w)}if(1===M?c<0?u=f+y:o=f+y:2===M&&(u=f+(d<0?w:y),o=f+(d<0?y:w)),void 0!==u&&void 0!==o)break;c=v}var D={};return void 0!==u&&(D.rise=b(a,u)),void 0!==o&&(D.set=b(a,o)),void 0===u&&void 0===o&&(D[d>0?"alwaysUp":"alwaysDown"]=!0),D}function L(e){return S(e).dec}function _(e){for(var t=e,n=0;n<20;n++){var r=L(t+.001),a=L(t-.001),u=(r-a)/.002,o=(r-2*L(t)+a)/1e-6;if(Math.abs(o)<1e-14)break;var i=t-u/o;if(Math.abs(i-t)<1e-8){t=i;break}t=i}return t}function N(e){var t=new Date(Date.UTC(e,5,21,0,0,0)),n=new Date(Date.UTC(e,11,21,0,0,0));return{summer:p(t),winter:p(n)}}function R(e,t){for(var n={summer:[],winter:[]},r=e.getUTCFullYear(),a=t.getUTCFullYear(),u=r-1;u<=a+1;u++){var o=N(u),i=_(o.summer),c=_(o.winter)+l,s=g(i+l),d=g(c);s>=e&&s<=t&&n.summer.push(s),d>=e&&d<=t&&n.winter.push(d)}return n}function B(e){return S(e).dec}function G(e){for(var t=e,n=0;n<20;n++){var r=B(t),a=(B(t+.001)-B(t-.001))/.002;if(Math.abs(a)<1e-14)break;var u=t-r/a;if(Math.abs(u-t)<1e-8)return u;t=u}return t}function K(e){var t=new Date(Date.UTC(e,2,20,0,0,0)),n=new Date(Date.UTC(e,8,22,0,0,0));return{vernal:p(t),autumnal:p(n)}}function Q(e,t){for(var n={vernal:[],autumnal:[]},r=e.getUTCFullYear(),a=t.getUTCFullYear(),u=r-1;u<=a+1;u++){var o=K(u),i=G(o.vernal),c=G(o.autumnal),s=g(i+l),d=g(c+l);s>=e&&s<=t&&n.vernal.push(s),d>=e&&d<=t&&n.autumnal.push(d)}return n}return t})()));
//# sourceMappingURL=bundle.js.map