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.

3 lines (2 loc) 2.46 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const R=require("./coordinates.cjs"),S=require("./epoch-BuLOjzKu.cjs"),f=require("./refraction.cjs"),v=require("./sun.cjs"),n=require("./utilities-HBcnbrPA.cjs"),w=(e,s)=>{const{latitude:r,longitude:c}=s,l=S.getJulianDate(e),a=Math.ceil(l-(2451545+9e-4)+69.184/86400)-c/360,t=(357.5291+.98560028*a)%360,D=1.9148*Math.sin(n.convertDegreesToRadians(t))+.02*Math.sin(n.convertDegreesToRadians(2*t))+3e-4*Math.sin(n.convertDegreesToRadians(3*t)),T=(t+D+180+102.9372)%360,o=2451545+a+.0053*Math.sin(n.convertDegreesToRadians(t))-.0069*Math.sin(n.convertDegreesToRadians(2*T)),i=n.convertRadiansToDegrees(Math.asin(Math.sin(n.convertDegreesToRadians(T))*Math.sin(n.convertDegreesToRadians(23.45)))),u=n.convertRadiansToDegrees(Math.acos(Math.sin(n.convertDegreesToRadians(-.833)-Math.sin(n.convertDegreesToRadians(r))*Math.sin(n.convertDegreesToRadians(i)))/Math.cos(n.convertDegreesToRadians(r))*Math.cos(n.convertDegreesToRadians(i)))),h=o-u/360,M=o+u/360;return{sunrise:new Date((h-24405875e-1)*86400*1e3),noon:new Date((o-24405875e-1)*86400*1e3),sunset:new Date((M-24405875e-1)*86400*1e3),J:a,ha:u}},d=(e,s,r=-12,c=288.15,l=101325)=>{e=new Date(new Date(e.setHours(0,0,0,0)).getTime());const{sunrise:g,noon:a,sunset:t}=w(e,s);if(g===null||t===null)return{sunrise:null,noon:null,sunset:null};let D=null;for(let o=-120;o<=120;o++){const i=new Date(g.getTime()+6e4*o),{ra:u,dec:h}=v.getSolarEquatorialCoordinate(i),M=R.convertEquatorialToHorizontal(i,s,{ra:u,dec:h});if(f.getCorrectionToHorizontalForRefraction(M,c,l).alt>r&&D===null){D=i;break}}let T=null;for(let o=-120;o<=120;o++){const i=new Date(t.getTime()+6e4*o),{ra:u,dec:h}=v.getSolarEquatorialCoordinate(i),M=R.convertEquatorialToHorizontal(i,s,{ra:u,dec:h});if(f.getCorrectionToHorizontalForRefraction(M,c,l).alt<r&&T===null){T=i;break}}return{sunrise:D||g,noon:a,sunset:T||t}},H=(e,s,r=-12,c=288.15,l=101325)=>{const{sunset:g}=d(e,s,r,c,l),{sunrise:a}=d(new Date(e.getTime()+6e4*60*24),s,r,c,l);return{start:g,end:a}},J=(e,s,r=-12,c=288.15,l=101325)=>{const g=new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),{sunrise:a,sunset:t}=d(e,s,r,c,l);return a===null||t===null?!1:g.getTime()<=a.getTime()||g.getTime()>=t.getTime()};exports.getGeneralizedSolarTransit=w;exports.getNight=H;exports.getSolarTransit=d;exports.isNight=J; //# sourceMappingURL=night.cjs.map