gtoubiana/acte

View on GitHub
src/js/private/functions/equinoxe.js

Summary

Maintainability
A
1 hr
Test Coverage
/**
 * Pour calculer le nombre de jours juliens d'une equinoxe ou d'un solstice.
 * @access private
 * @author John Walker
 * @since 0.0.1
 * @license Domaine public
 * @see {@link http://fourmilab.ch/documents/calendar/|equinox}
 * @param  {Number} an - Année
 * @param  {Number} item - L'item à calculer :
 * 0 = Equinoxe de Mars,
 * 1 = Solstice de Juin,
 * 2 = Equinoxe de Septembre,
 * 3 = Solstice de Décembre
 * @return {Number} Le nombre de jours juliens pour l'equinoxe ou solstice
 * @example
 * equinoxe(2015,0); // 2457102.4488504543
 */
const equinoxe = (an, item) => {
  let i;
  let j;
  let Jde0tab;
  let S;
  let Y;

  if (an < 1000) {
    Jde0tab = jde0Tab1000;
    Y = an / 1000;
  } else {
    Jde0tab = jde0Tab2000;
    Y = (an - 2000) / 1000;
  }
  const Jde0 = Jde0tab[item][0] + (Jde0tab[item][1] * Y) +
    (Jde0tab[item][2] * (Y ** 2)) + (Jde0tab[item][3] *
      (Y ** 3)) + (Jde0tab[item][4] * (Y ** 4));
  const T = (Jde0 - 2451545.0) / 36525;
  const W = (35999.373 * T) - 2.47;
  const deltaL = 1 + (0.0334 * cosinus(W)) + (0.0007 * cosinus(2 * W));

  S = 0;
  for (i = 0, j = 0; i < 24; i += 1) {
    S += termesPerEquinoxes[j] *
      cosinus(termesPerEquinoxes[j + 1] +
        (termesPerEquinoxes[j + 2] * T));
    j += 3;
  }

  return Jde0 + ((S * 0.00001) / deltaL);
};