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.
133 lines (132 loc) • 6.49 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const AstronomicalObject_1 = __importDefault(require("../astronomicalObject/AstronomicalObject"));
const standardAltitude_1 = require("../constants/standardAltitude");
const apparentCoordinateCalc_1 = require("../coordinates/calculations/apparentCoordinateCalc");
const coordinateCalc_1 = require("../coordinates/calculations/coordinateCalc");
const earth_1 = require("../earth");
const time_1 = require("../time");
const utils_1 = require("../utils");
const riseSetTransitCalc_1 = require("../utils/riseSetTransitCalc");
const diameters_1 = require("./constants/diameters");
class Sun extends AstronomicalObject_1.default {
constructor(toi) {
super(toi, 'sun');
this.earth = (0, earth_1.createEarth)(toi);
}
getHeliocentricEclipticRectangularJ2000Coordinates() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.resolve({ x: 0, y: 0, z: 0 });
});
}
getHeliocentricEclipticRectangularDateCoordinates() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.resolve({ x: 0, y: 0, z: 0 });
});
}
getHeliocentricEclipticSphericalJ2000Coordinates() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.resolve({ lon: 0, lat: 0, radiusVector: 0 });
});
}
getHeliocentricEclipticSphericalDateCoordinates() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.resolve({ lon: 0, lat: 0, radiusVector: 0 });
});
}
getGeocentricEclipticRectangularJ2000Coordinates() {
return __awaiter(this, void 0, void 0, function* () {
const coords = yield this.getGeocentricEclipticSphericalJ2000Coordinates();
return (0, coordinateCalc_1.spherical2rectangular)(coords);
});
}
getGeocentricEclipticRectangularDateCoordinates() {
return __awaiter(this, void 0, void 0, function* () {
const coords = yield this.getGeocentricEclipticSphericalDateCoordinates();
return (0, coordinateCalc_1.spherical2rectangular)(coords);
});
}
getGeocentricEclipticSphericalJ2000Coordinates() {
return __awaiter(this, void 0, void 0, function* () {
const coords = yield this.earth.getHeliocentricEclipticSphericalJ2000Coordinates();
return (0, coordinateCalc_1.earthEclipticSpherical2sunEclipticSpherical)(coords);
});
}
getGeocentricEclipticSphericalDateCoordinates() {
return __awaiter(this, void 0, void 0, function* () {
const coords = yield this.earth.getHeliocentricEclipticSphericalDateCoordinates();
return (0, coordinateCalc_1.earthEclipticSpherical2sunEclipticSpherical)(coords);
});
}
getApparentGeocentricEclipticSphericalCoordinates() {
return __awaiter(this, void 0, void 0, function* () {
let coords = yield this.getGeocentricEclipticSphericalDateCoordinates();
coords = (0, apparentCoordinateCalc_1.correctEffectOfAberration)(coords, this.T);
coords = (0, apparentCoordinateCalc_1.correctEffectOfNutation)(coords, this.T);
return coords;
});
}
getTransit(location) {
return __awaiter(this, void 0, void 0, function* () {
const jd = yield (0, riseSetTransitCalc_1.getTransit)(Sun, location, this.jd0);
return time_1.createTimeOfInterest.fromJulianDay(jd);
});
}
getRise(location_1) {
return __awaiter(this, arguments, void 0, function* (location, standardAltitude = standardAltitude_1.STANDARD_ALTITUDE_SUN_CENTER_REFRACTION) {
const jd = yield (0, riseSetTransitCalc_1.getRise)(Sun, location, this.jd0, standardAltitude);
return time_1.createTimeOfInterest.fromJulianDay(jd);
});
}
getRiseUpperLimb(location) {
return __awaiter(this, void 0, void 0, function* () {
return yield this.getRise(location, standardAltitude_1.STANDARD_ALTITUDE_SUN_UPPER_LIMB_REFRACTION);
});
}
getSet(location_1) {
return __awaiter(this, arguments, void 0, function* (location, standardAltitude = standardAltitude_1.STANDARD_ALTITUDE_SUN_CENTER_REFRACTION) {
const jd = yield (0, riseSetTransitCalc_1.getSet)(Sun, location, this.jd0, standardAltitude);
return time_1.createTimeOfInterest.fromJulianDay(jd);
});
}
getSetUpperLimb(location) {
return __awaiter(this, void 0, void 0, function* () {
return yield this.getSet(location, standardAltitude_1.STANDARD_ALTITUDE_SUN_UPPER_LIMB_REFRACTION);
});
}
getAngularDiameter() {
return __awaiter(this, void 0, void 0, function* () {
const distance = yield this.getApparentDistanceToEarth();
return utils_1.observationCalc.getAngularDiameter(distance, diameters_1.DIAMETER_SUN);
});
}
getTopocentricAngularDiameter(location) {
return __awaiter(this, void 0, void 0, function* () {
const distance = yield this.getTopocentricDistanceToEarth(location);
return utils_1.observationCalc.getAngularDiameter(distance, diameters_1.DIAMETER_SUN);
});
}
getApparentMagnitude() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.resolve(-26.74);
});
}
getTopocentricApparentMagnitude() {
return __awaiter(this, void 0, void 0, function* () {
return Promise.resolve(-26.74);
});
}
}
exports.default = Sun;