/*
* kollavarsham
* http://kollavarsham.org
*
* Copyright (c) 2014-2023 The Kollavarsham Team
* Licensed under the MIT license.
*/
/**
* @module planetarySystem
*/
import { Star, Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Candrocca, Rahu } from './planets/index';
import { Yuga } from './yuga';
let star;
let sun;
let moon;
let mercury;
let venus;
let mars;
let jupiter;
let saturn;
let candrocca; // Moon Apogee
let rahu; // Moon Node
let _yuga; // eslint-disable-line no-underscore-dangle
let planetsList;
/**
*
* **INTERNAL/PRIVATE**
*
* @class PlanetarySystem
*/
export class PlanetarySystem {
constructor(system = 'SuryaSiddhanta') {
this.system = system === 'InPancasiddhantika' ? system : 'SuryaSiddhanta';
star = new Star();
sun = new Sun();
moon = new Moon();
mercury = new Mercury();
venus = new Venus();
mars = new Mars();
jupiter = new Jupiter();
saturn = new Saturn();
candrocca = new Candrocca(); // Moon Apogee
rahu = new Rahu(); // Moon Node
_yuga = new Yuga();
this.initializeYugaRotations();
this.initializeYuga();
PlanetarySystem.initializePlanetaryConstants();
planetsList = [star, sun, moon, mercury, venus, mars, jupiter, saturn, candrocca, rahu]
.reduce((list, planet) => (Object.assign(Object.assign({}, list), { [planet.name]: planet })), {});
}
get yuga() {
return _yuga;
}
get planets() {
return planetsList;
}
initializeYugaRotations() {
// common values across the systems
sun.YugaRotation = 4320000;
moon.YugaRotation = 57753336;
jupiter.YugaRotation = 364220;
const isSuryaSiddhantaSystem = this.system === 'SuryaSiddhanta';
// # Saura, HIL, p.15 && # Latadeva/Ardharatrika, HIL, p.15
star.YugaRotation = isSuryaSiddhantaSystem ? 1582237800 : 1582237828;
mercury.YugaRotation = isSuryaSiddhantaSystem ? 17937000 : 17937060;
venus.YugaRotation = isSuryaSiddhantaSystem ? 7022388 : 7022376;
mars.YugaRotation = isSuryaSiddhantaSystem ? 2296824 : 2296832;
saturn.YugaRotation = isSuryaSiddhantaSystem ? 146564 : 146568;
candrocca.YugaRotation = isSuryaSiddhantaSystem ? 488219 : 488203;
rahu.YugaRotation = isSuryaSiddhantaSystem ? -232226 : -232238;
}
initializeYuga() {
this.yuga.CivilDays = star.YugaRotation - sun.YugaRotation;
this.yuga.SynodicMonth = moon.YugaRotation - sun.YugaRotation;
this.yuga.Adhimasa = this.yuga.SynodicMonth - 12 * sun.YugaRotation;
this.yuga.Tithi = 30 * this.yuga.SynodicMonth;
this.yuga.Ksayadina = this.yuga.Tithi - this.yuga.CivilDays;
}
static initializePlanetaryConstants() {
// star
star.Rotation = 0;
star.Sighra = 0;
star.Apogee = 0;
star.MandaCircumference = 0;
star.SighraCircumference = 0;
// sun
sun.Rotation = sun.YugaRotation;
sun.Sighra = sun.YugaRotation;
sun.Apogee = 77 + 17 / 60;
sun.MandaCircumference = 13 + 50 / 60;
sun.SighraCircumference = 0;
// moon
moon.Rotation = moon.YugaRotation;
moon.Sighra = 0;
moon.Apogee = 0;
moon.MandaCircumference = 31 + 50 / 60;
moon.SighraCircumference = 0;
// mercury
mercury.Rotation = sun.YugaRotation;
mercury.Sighra = mercury.YugaRotation;
mercury.Apogee = 220 + 27 / 60;
mercury.MandaCircumference = 29;
mercury.SighraCircumference = 131.5;
// venus
venus.Rotation = sun.YugaRotation;
venus.Sighra = venus.YugaRotation;
venus.Apogee = 79 + 50 / 60;
venus.MandaCircumference = 11.5;
venus.SighraCircumference = 261;
// mars
mars.Rotation = mars.YugaRotation;
mars.Sighra = sun.YugaRotation;
mars.Apogee = 130 + 2 / 60;
mars.MandaCircumference = 73.5;
mars.SighraCircumference = 233.5;
// jupiter
jupiter.Rotation = jupiter.YugaRotation;
jupiter.Sighra = sun.YugaRotation;
jupiter.Apogee = 171 + 18 / 60;
jupiter.MandaCircumference = 32.5;
jupiter.SighraCircumference = 71;
// saturn
saturn.Rotation = saturn.YugaRotation;
saturn.Sighra = sun.YugaRotation;
saturn.Apogee = 236 + 37 / 60;
saturn.MandaCircumference = 48.5;
saturn.SighraCircumference = 39.5;
// Candrocca
candrocca.Rotation = candrocca.YugaRotation;
candrocca.Sighra = 0;
candrocca.Apogee = 0;
candrocca.MandaCircumference = 0;
candrocca.SighraCircumference = 0;
// Rahu
rahu.Rotation = rahu.YugaRotation;
rahu.Sighra = 0;
rahu.Apogee = 0;
rahu.MandaCircumference = 0;
rahu.SighraCircumference = 0;
}
}