eqToHz function

({double alt, double az}) eqToHz(
  1. double ra,
  2. double dec,
  3. double phi,
  4. double psi,
  5. double st,
)

Converts equatorial to horizontal coordinates.

ra right ascension, dec declination (radians). phi observer latitude, psi observer longitude (radians). st sidereal time at Greenwich in radians.

Returns azimuth (westward from south) and altitude.

Implementation

({double az, double alt}) eqToHz(
    double ra, double dec, double phi, double psi, double st) {
  final h = st - psi - ra;
  final sH = math.sin(h);
  final cH = math.cos(h);
  final sPhi = math.sin(phi);
  final cPhi = math.cos(phi);
  final sDec = math.sin(dec);
  final cDec = math.cos(dec);
  return (
    az: math.atan2(sH, cH * sPhi - (sDec / cDec) * cPhi),
    alt: math.asin(sPhi * sDec + cPhi * cDec * cH),
  );
}