topocentric function

({double dec, double ra}) topocentric(
  1. double ra,
  2. double dec,
  3. double delta,
  4. double rhoSPhi,
  5. double rhoCPhi,
  6. double h,
  7. double sinPi,
)

Topocentric position using the rigorous method (40.2, 40.3).

ra, dec geocentric equatorial coordinates (radians). delta distance in AU. rhoSPhi, rhoCPhi parallax constants (see globe). lon observer longitude (radians). h hour angle (radians). sinPi sine of equatorial horizontal parallax.

Implementation

({double ra, double dec}) topocentric(
    double ra, double dec, double delta,
    double rhoSPhi, double rhoCPhi,
    double h, double sinPi) {
  final sH = math.sin(h);
  final cH = math.cos(h);
  final sDec = math.sin(dec);
  final cDec = math.cos(dec);
  final dAlpha = math.atan2(
      -rhoCPhi * sinPi * sH, cDec - rhoCPhi * sinPi * cH);
  final newRa = ra + dAlpha;
  final newDec = math.atan2(
      (sDec - rhoSPhi * sinPi) * math.cos(dAlpha),
      cDec - rhoCPhi * sinPi * cH);
  return (ra: newRa, dec: newDec);
}