astronomy-bundle
Version:
Bundle for astronomical calculations such as position of moon, sun and planets, sunrise, sunset or solar eclipses. Most of the calculations are based on Jean Meeus 'Astronomical Algorithms' book and the VSOP87 theory.
47 lines (46 loc) • 2.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.correctEffectOfRefraction = exports.correctEffectOfAberration = exports.correctEffectOfNutation = exports.getLightTimeCorrectedJulianDay = void 0;
const earthCalc_1 = require("../../earth/calculations/earthCalc");
const calculations_1 = require("../../sun/calculations");
const angleCalc_1 = require("../../utils/angleCalc");
function getLightTimeCorrectedJulianDay(jd, d) {
const theta = 0.0057755183 * d;
return jd - theta;
}
exports.getLightTimeCorrectedJulianDay = getLightTimeCorrectedJulianDay;
function correctEffectOfNutation(coords, T) {
const phi = (0, earthCalc_1.getNutationInLongitude)(T);
return {
lon: coords.lon + phi,
lat: coords.lat,
radiusVector: coords.radiusVector,
};
}
exports.correctEffectOfNutation = correctEffectOfNutation;
function correctEffectOfAberration(coords, T) {
const lonSun = calculations_1.sunCalc.getTrueLongitude(T);
const e = (0, earthCalc_1.getEccentricity)(T);
const pi = (0, earthCalc_1.getLongitudeOfPerihelionOfOrbit)(T);
const k = (0, angleCalc_1.sec2deg)(20.49552);
const lonRad = (0, angleCalc_1.deg2rad)(coords.lon);
const latRad = (0, angleCalc_1.deg2rad)(coords.lat);
const lonSunRad = (0, angleCalc_1.deg2rad)(lonSun);
const piRad = (0, angleCalc_1.deg2rad)(pi);
const dLon = (-1 * k * Math.cos(lonSunRad - lonRad) + e * k * Math.cos(piRad - lonRad)) / Math.cos(latRad);
const dLat = -1 * k * Math.sin(latRad) * (Math.sin(lonSunRad - lonRad) - e * Math.sin(piRad - lonRad));
return {
lon: coords.lon + dLon,
lat: coords.lat + dLat,
radiusVector: coords.radiusVector,
};
}
exports.correctEffectOfAberration = correctEffectOfAberration;
function correctEffectOfRefraction(altitude) {
if (altitude < -5) {
return altitude;
}
const R = 1.02 / Math.tan((0, angleCalc_1.deg2rad)(altitude + 10.3 / (altitude + 5.11)));
return altitude + R / 60;
}
exports.correctEffectOfRefraction = correctEffectOfRefraction;