equatorialOfDate function

EquatorialPosition equatorialOfDate(
  1. Ephemeris ephemeris,
  2. int target,
  3. double jdTT
)

Apparent geocentric right ascension and declination of body target (NAIF code) on the true equator and equinox of date at jdTT.

Implementation

EquatorialPosition equatorialOfDate(
  Ephemeris ephemeris,
  int target,
  double jdTT,
) {
  final (:direction, :distance) = geocentricDirection(ephemeris, target, jdTT);
  final t = centuriesSinceJ2000(jdTT);
  final equator = gcrsToEclipticOfDate(
    direction,
    t,
    nutationInLongitude: nutation(t).longitude,
  ).rotateX(-trueObliquity(t));
  final ra = math.atan2(equator.y, equator.x) / _radian;
  return EquatorialPosition(
    ra < 0 ? ra + 360 : ra,
    math.asin(equator.z.clamp(-1.0, 1.0)) / _radian,
    distance,
  );
}