MoonPhysical constructor

MoonPhysical(
  1. double jde
)

Implementation

MoonPhysical(this.jde) {
  final nutResult = nut.nutation(jde);
  _deltaPsi = nutResult.dPsi;
  final t = j2000Century(jde);

  _f = horner(t, [
    93.272095 * _d2r,
    483202.0175233 * _d2r,
    -0.0036539 * _d2r,
    -_d2r / 3526000,
    _d2r / 863310000,
  ]);
  _omega = horner(t, [
    125.0445479 * _d2r,
    -1934.1362891 * _d2r,
    0.0020754 * _d2r,
    _d2r / 467441,
    -_d2r / 60616000,
  ]);

  _eps = nut.meanObliquity(jde) + nutResult.dEps;
  _sEps = math.sin(_eps);
  _cEps = math.cos(_eps);

  // rho, sigma, tau — p. 372, 373
  final d = horner(t, [
    297.8501921 * _d2r,
    445267.1114034 * _d2r,
    -0.0018819 * _d2r,
    _d2r / 545868,
    -_d2r / 113065000,
  ]);
  final m = horner(t, [
    357.5291092 * _d2r,
    35999.0502909 * _d2r,
    -0.0001536 * _d2r,
    _d2r / 24490000,
  ]);
  final mp = horner(t, [
    134.9633964 * _d2r,
    477198.8675055 * _d2r,
    0.0087414 * _d2r,
    _d2r / 69699,
    -_d2r / 14712000,
  ]);
  final e = horner(t, [1.0, -0.002516, -0.0000074]);
  final k1 = 119.75 * _d2r + 131.849 * _d2r * t;
  final k2 = 72.56 * _d2r + 20.186 * _d2r * t;

  _rho = -0.02752 * _d2r * math.cos(mp) +
      -0.02245 * _d2r * math.sin(_f) +
      0.00684 * _d2r * math.cos(mp - 2 * _f) +
      -0.00293 * _d2r * math.cos(2 * _f) +
      -0.00085 * _d2r * math.cos(2 * (_f - d)) +
      -0.00054 * _d2r * math.cos(mp - 2 * d) +
      -0.0002 * _d2r * math.sin(mp + _f) +
      -0.0002 * _d2r * math.cos(mp + 2 * _f) +
      -0.0002 * _d2r * math.cos(mp - _f) +
      0.00014 * _d2r * math.cos(mp + 2 * (_f - d));

  _sigma = -0.02816 * _d2r * math.sin(mp) +
      0.02244 * _d2r * math.cos(_f) +
      -0.00682 * _d2r * math.sin(mp - 2 * _f) +
      -0.00279 * _d2r * math.sin(2 * _f) +
      -0.00083 * _d2r * math.sin(2 * (_f - d)) +
      0.00069 * _d2r * math.sin(mp - 2 * d) +
      0.0004 * _d2r * math.cos(mp + _f) +
      -0.00025 * _d2r * math.sin(2 * mp) +
      -0.00023 * _d2r * math.sin(mp + 2 * _f) +
      0.0002 * _d2r * math.cos(mp - _f) +
      0.00019 * _d2r * math.sin(mp - _f) +
      0.00013 * _d2r * math.sin(mp + 2 * (_f - d)) +
      -0.0001 * _d2r * math.cos(mp - 3 * _f);

  _tau = 0.0252 * _d2r * math.sin(m) * e +
      0.00473 * _d2r * math.sin(2 * (mp - _f)) +
      -0.00467 * _d2r * math.sin(mp) +
      0.00396 * _d2r * math.sin(k1) +
      0.00276 * _d2r * math.sin(2 * (mp - d)) +
      0.00196 * _d2r * math.sin(_omega) +
      -0.00183 * _d2r * math.cos(mp - _f) +
      0.00115 * _d2r * math.sin(mp - 2 * d) +
      -0.00096 * _d2r * math.sin(mp - d) +
      0.00046 * _d2r * math.sin(2 * (_f - d)) +
      -0.00039 * _d2r * math.sin(mp - _f) +
      -0.00032 * _d2r * math.sin(mp - m - d) +
      0.00027 * _d2r * math.sin(2 * (mp - d) - m) +
      0.00023 * _d2r * math.sin(k2) +
      -0.00014 * _d2r * math.sin(2 * d) +
      0.00014 * _d2r * math.cos(2 * (mp - _f)) +
      -0.00012 * _d2r * math.sin(mp - 2 * _f) +
      -0.00012 * _d2r * math.sin(2 * mp) +
      0.00011 * _d2r * math.sin(2 * (mp - m - d));
}