UNPKG

@observerly/astrometry

Version:

observerly's lightweight, zero-dependency, type safe astrometry library written in Typescript for calculating the position of celestial objects in the sky.

4 lines (3 loc) 7.7 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("./astrometry.cjs"),z=require("./constants.cjs"),K=require("./earth.cjs"),l=require("./epoch-BuLOjzKu.cjs"),F=require("./orbit.cjs"),g=require("./sun.cjs"),r=require("./utilities-HBcnbrPA.cjs");// @license Copyright © 2021-2023 observerly const m=2.4234366115277777e6,v=29.530588853,X=new Map([["January",new Set(["Wolf Moon","Spirit Moon"])],["February",new Set(["Snow Moon","Bear Moon"])],["March",new Set(["Worm Moon","Snow Crust Moon"])],["April",new Set(["Pink Moon","Broken Snowshoe Moon"])],["May",new Set(["Flower Moon","Sucker Moon"])],["June",new Set(["Strawberry Moon","Blooming Moon"])],["July",new Set(["Buck Moon","Berry Moon"])],["August",new Set(["Sturgeon Moon","Grain Moon"])],["September",new Set(["Corn Moon","Changing Leaves Moon"])],["October",new Set(["Hunter's Moon","Falling Leaves Moon"])],["November",new Set(["Beaver Moon","Freezing Moon"])],["December",new Set(["Cold Moon","Little Spirit Moon"])]]),u={New:"New",WaxingCrescent:"Waxing Crescent",FirstQuarter:"First Quarter",WaxingGibbous:"Waxing Gibbous",Full:"Full",WaningGibbous:"Waning Gibbous",LastQuarter:"Last Quarter",WaningCrescent:"Waning Crescent",Invalid:"Invalid"},R=n=>{const e=r.convertDegreesToRadians(g.getSolarMeanAnomaly(n));return .1858*Math.sin(e)},D=n=>{const t=(l.getJulianDate(n)-2451545)/36525;let o=(134.9634114+477198.8676313*t+.008997*t**2+t**3/69699-t**4/14712e3)%360;return o<0&&(o+=360),o},Z=n=>{const t=(l.getJulianDate(n)-2451545)/36525;let o=(218.3164477+481267.88123421*t-.0015786*t**2+t**3/538841-t**4/65194e3)%360;return o<0&&(o+=360),o},$=n=>{const t=(l.getJulianDate(n)-2451545)/36525;let a=(160.7108+390.67050284*Math.round(t*1236.85)-.0016118*t**2-227e-8*t**3-11e-9*t**4)%360;return a<0&&(a+=360),a},A=n=>{let o=(13.176339686*(l.getJulianDate(n)-2451545)+218.31643388)%360;return o<0&&(o+=360),o},w=n=>{const e=r.convertDegreesToRadians(D(n)),t=r.convertDegreesToRadians(A(n)),o=r.convertDegreesToRadians(g.getSolarEclipticLongitude(n));return 1.2739*Math.sin(2*(t-o)-e)},y=n=>{let t=(125.044522-.0529539*(l.getJulianDate(n)-2451545))%360;t<0&&(t+=360);const o=r.convertDegreesToRadians(g.getSolarMeanAnomaly(n));return t-.16*Math.sin(o)},I=n=>{const e=R(n),t=w(n),o=D(n),a=r.convertDegreesToRadians(g.getSolarMeanAnomaly(n));let s=(o+t-e-.37*Math.sin(a))%360;return s<0&&(s+=360),s},L=n=>{const e=I(n);let t=6.2886*Math.sin(r.convertDegreesToRadians(e))+.214*Math.sin(r.convertDegreesToRadians(2*e))%360;return t<0&&(t+=360),t},M=n=>{let e=A(n);const t=R(n),o=w(n),a=L(n);e=(e+o+a-t)%360,e<0&&(e+=360);const s=g.getSolarEclipticLongitude(n),c=.6583*Math.sin(2*r.convertDegreesToRadians(e-s));let i=(e+c)%360;return i<0&&(i+=360),i},d=n=>{const e=y(n),t=g.getSolarMeanAnomaly(n);return e-.16*Math.sin(r.convertDegreesToRadians(t))},ee=n=>{const e=M(n),t=d(n),o=r.convertDegreesToRadians(5.1453964);let a=(t+r.convertRadiansToDegrees(Math.atan2(Math.sin(r.convertDegreesToRadians(e-t))*Math.cos(o),Math.cos(r.convertDegreesToRadians(e-t)))))%360;return a<0&&(a+=360),a},ne=n=>{const e=M(n),t=d(n),o=r.convertDegreesToRadians(5.1453964);return r.convertRadiansToDegrees(Math.asin(Math.sin(r.convertDegreesToRadians(e-t))*Math.sin(o)))},S=n=>{const e=M(n),t=d(n),o=r.convertDegreesToRadians(5.1453964);let a=(t+r.convertRadiansToDegrees(Math.atan2(Math.sin(r.convertDegreesToRadians(e-t))*Math.cos(o),Math.cos(r.convertDegreesToRadians(e-t)))))%360;a<0&&(a+=360);const s=r.convertRadiansToDegrees(Math.asin(Math.sin(r.convertDegreesToRadians(e-t))*Math.sin(o)));return{λ:a,β:s}},J=n=>{const{λ:e,β:t}=S(n),o=r.convertDegreesToRadians(b.getObliquityOfTheEcliptic(n)),a=r.convertRadiansToDegrees(Math.atan2(Math.sin(r.convertDegreesToRadians(e))*Math.cos(o)-Math.tan(r.convertDegreesToRadians(t))*Math.sin(o),Math.cos(r.convertDegreesToRadians(e)))),s=r.convertRadiansToDegrees(Math.asin(Math.sin(r.convertDegreesToRadians(t))*Math.cos(o)+Math.cos(r.convertDegreesToRadians(t))*Math.sin(o)*Math.sin(r.convertDegreesToRadians(e))));return{ra:a,dec:s}},O=n=>{const{λ:e,β:t}=S(n),o=g.getSolarEclipticLongitude(n);let a=r.convertRadiansToDegrees(Math.acos(Math.cos(r.convertDegreesToRadians(e-o))*Math.cos(r.convertDegreesToRadians(t))))%360;return a<0&&(a+=360),a},te=(n,e)=>{if(!e){const j=L(n);return .5181*F.getFOrbitalParameter(j,.0549)}const t=2*.272481,o=q(n)/z.AU_IN_METERS,{ra:a,dec:s}=J(n),c=b.getHourAngle(n,e.longitude,a),i=8.794/o,T=Math.sin(r.convertDegreesToRadians(i/3600)),E=K.earth.r,{sin:B,cos:C}={sin:Math.sin(r.convertDegreesToRadians(s)),cos:Math.cos(r.convertDegreesToRadians(s))},{sin:x,cos:G}={sin:Math.sin(r.convertDegreesToRadians(c)),cos:Math.cos(r.convertDegreesToRadians(c))},p=Math.atan(.99664719*Math.tan(r.convertDegreesToRadians(e.latitude))),k=.99664719*Math.sin(p)+e.elevation*Math.sin(r.convertDegreesToRadians(e.latitude))/E,H=Math.cos(p)+e.elevation*Math.cos(r.convertDegreesToRadians(e.latitude))/E,U=C*x,Q=C*G-H*T,Y=B-k*T,V=Math.sqrt(U**2+Q**2+Y**2);return r.convertRadiansToDegrees(t/V*T)},q=n=>{const e=L(n);return 3844e5/F.getFOrbitalParameter(e,.0549)},P=n=>{const e=M(n),t=g.getSolarEclipticLongitude(n);let o=(e-t)%360;o<0&&(o+=360);const a=o*(29.5306/360);return{A:o,age:a}},W=n=>{const e=r.convertDegreesToRadians(D(n)),t=O(n);return 180-t-.1468*((1-.0549*Math.sin(e))/(1-.0167*Math.sin(e)))*Math.sin(r.convertDegreesToRadians(t))},h=n=>{const e=W(n);return 50*(1+Math.cos(r.convertDegreesToRadians(e)))},N=n=>{const{age:e}=P(n),t=h(n);return e<5.53699?u.WaxingCrescent:e<9.22831?u.FirstQuarter:e<14.71963?u.WaxingGibbous:e<15.02096&&Math.abs(t-100)<1?u.Full:e<20.30228?u.WaningGibbous:e<23.99361?u.LastQuarter:e<29.08493?u.WaningCrescent:u.New},oe=n=>{const e=l.getJulianDate(n);return Math.round((e-m)/v)+1},_=n=>N(n)==="New",re=n=>{let e=new Date(new Date(n).setHours(0,0,0,0));for(;!_(e);)e=new Date(e.getTime()+60*60*1e3);let t=e.getTime()-12*60*60*1e3;const o=e.getTime()+12*60*60*1e3;let a=Number.POSITIVE_INFINITY,s=e,c=0;for(;t<=o;){const i=h(new Date(t));if(i<a?(a=i,s=new Date(t),c=0):c++,t+=1e4,c>100)break}return s},f=n=>N(n)==="Full",ae=n=>{let e=new Date(new Date(n).setHours(0,0,0,0));for(;!f(e);)e=new Date(e.getTime()+60*60*1e3);let t=e.getTime()-12*60*60*1e3;const o=e.getTime()+12*60*60*1e3;let a=Number.NEGATIVE_INFINITY,s=e,c=0;for(;t<=o;){const i=h(new Date(t));if(i>a?(a=i,s=new Date(t),c=0):c++,t+=1e4,c>100)break}return s},se=n=>{const e=n.getDate(),t=(v-29)*24*60*60*1e3,o=n.getHours()*60*60*1e3+n.getMinutes()*60*1e3+n.getSeconds()*1e3+n.getMilliseconds();return e!==29&&e!==30&&e!==31||e===29&&o<t?!1:f(n)};exports.LUNAR_SYNODIC_MONTH=v;exports.LUNATION_BASE_JULIAN_DAY=m;exports.Phases=u;exports.getLunarAge=P;exports.getLunarAngularDiameter=te;exports.getLunarAnnualEquationCorrection=R;exports.getLunarArgumentOfLatitude=$;exports.getLunarBrownLunationNumber=oe;exports.getLunarCorrectedEclipticLongitudeOfTheAscendingNode=d;exports.getLunarDistance=q;exports.getLunarEclipticCoordinate=S;exports.getLunarEclipticLatitude=ne;exports.getLunarEclipticLongitude=ee;exports.getLunarElongation=O;exports.getLunarEquatorialCoordinate=J;exports.getLunarEvectionCorrection=w;exports.getLunarIllumination=h;exports.getLunarMeanAnomaly=D;exports.getLunarMeanAnomalyCorrection=I;exports.getLunarMeanEclipticLongitude=A;exports.getLunarMeanEclipticLongitudeOfTheAscendingNode=y;exports.getLunarMeanGeometricLongitude=Z;exports.getLunarPhase=N;exports.getLunarPhaseAngle=W;exports.getLunarTrueAnomaly=L;exports.getLunarTrueEclipticLongitude=M;exports.getNextFullMoon=ae;exports.getNextNewMoon=re;exports.isBlueMoon=se;exports.isFullMoon=f;exports.isNewMoon=_;exports.names=X; //# sourceMappingURL=moon.cjs.map