/*
*+
* Name:
* palDh2e
* Purpose:
* Horizon to equatorial coordinates: Az,El to HA,Dec
* Language:
* Starlink ANSI C
* Type of Module:
* Library routine
* Invocation:
* palDh2e( double az, double el, double phi, double * ha, double * dec );
* Arguments:
* az = double (Given)
* Azimuth (radians)
* el = double (Given)
* Elevation (radians)
* phi = double (Given)
* Observatory latitude (radians)
* ha = double * (Returned)
* Hour angle (radians)
* dec = double * (Returned)
* Declination (radians)
* Description:
* Authors:
* PTW: Pat Wallace (STFC)
* TIMJ: Tim Jenness (JAC, Hawaii)
* {enter_new_authors_here}
* Notes:
* - All the arguments are angles in radians.
* - The sign convention for azimuth is north zero, east +pi/2.
* - HA is returned in the range +/-pi. Declination is returned
* in the range +/-pi/2.
* - The latitude is (in principle) geodetic. In critical
* applications, corrections for polar motion should be applied.
* - In some applications it will be important to specify the
* correct type of elevation in order to produce the required
* type of HA,Dec. In particular, it may be important to
* distinguish between the elevation as affected by refraction,
* which will yield the "observed" HA,Dec, and the elevation
* in vacuo, which will yield the "topocentric" HA,Dec. If the
* effects of diurnal aberration can be neglected, the
* topocentric HA,Dec may be used as an approximation to the
* "apparent" HA,Dec.
* - No range checking of arguments is done.
* - In applications which involve many such calculations, rather
* than calling the present routine it will be more efficient to
* use inline code, having previously computed fixed terms such
* as sine and cosine of latitude.
* History:
* 2012-02-08 (TIMJ):
* Initial version with documentation taken from Fortran SLA
* {enter_further_changes_here}
* Copyright:
* Copyright (C) 2012 Science and Technology Facilities Council.
* All Rights Reserved.
* Licence:
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA.
* Bugs:
* {note_any_bugs_here}
*-
*/
#include "pal.h"
#include
void
palDh2e ( double az, double el, double phi, double *ha, double *dec) {
double sa;
double ca;
double se;
double ce;
double sp;
double cp;
double x;
double y;
double z;
double r;
/* Useful trig functions */
sa = sin(az);
ca = cos(az);
se = sin(el);
ce = cos(el);
sp = sin(phi);
cp = cos(phi);
/* HA,Dec as x,y,z */
x = -ca * ce * sp + se * cp;
y = -sa * ce;
z = ca * ce * cp + se * sp;
/* To HA,Dec */
r = sqrt(x * x + y * y);
if (r == 0.) {
*ha = 0.;
} else {
*ha = atan2(y, x);
}
*dec = atan2(z, r);
return;
}