approxNutation function

({double dEps, double dPsi}) approxNutation(
  1. double jde
)

Fast approximation of nutation. Accuracy: 0.5″ in Δψ, 0.1″ in Δε.

Implementation

({double dPsi, double dEps}) approxNutation(double jde) {
  final t = (jde - j2000) / 36525;
  final omega = (125.04452 - 1934.136261 * t) * math.pi / 180;
  final l = (280.4665 + 36000.7698 * t) * math.pi / 180;
  final n = (218.3165 + 481267.8813 * t) * math.pi / 180;

  final sOmega = math.sin(omega);
  final cOmega = math.cos(omega);
  final s2L = math.sin(2 * l);
  final c2L = math.cos(2 * l);
  final s2N = math.sin(2 * n);
  final c2N = math.cos(2 * n);
  final s2Omega = math.sin(2 * omega);
  final c2Omega = math.cos(2 * omega);

  return (
    dPsi: secToRad(-17.2 * sOmega - 1.32 * s2L - 0.23 * s2N + 0.21 * s2Omega),
    dEps: secToRad(9.2 * cOmega + 0.57 * c2L + 0.1 * c2N - 0.09 * c2Omega),
  );
}