| 1 | #include "slalib.h" | 
|---|
| 2 | #include "slamac.h" | 
|---|
| 3 | double slaZd ( double ha, double dec, double phi ) | 
|---|
| 4 | /* | 
|---|
| 5 | **  - - - - - - | 
|---|
| 6 | **   s l a Z d | 
|---|
| 7 | **  - - - - - - | 
|---|
| 8 | ** | 
|---|
| 9 | **  HA, Dec to Zenith Distance. | 
|---|
| 10 | ** | 
|---|
| 11 | **  (double precision) | 
|---|
| 12 | ** | 
|---|
| 13 | **  Given: | 
|---|
| 14 | **     ha     double     Hour Angle in radians | 
|---|
| 15 | **     dec    double     declination in radians | 
|---|
| 16 | **     phi    double     observatory latitude in radians | 
|---|
| 17 | ** | 
|---|
| 18 | **  The result is in the range 0 to pi. | 
|---|
| 19 | ** | 
|---|
| 20 | **  Notes: | 
|---|
| 21 | ** | 
|---|
| 22 | **  1)  The latitude must be geodetic.  In critical applications, | 
|---|
| 23 | **      corrections for polar motion should be applied. | 
|---|
| 24 | ** | 
|---|
| 25 | **  2)  In some applications it will be important to specify the | 
|---|
| 26 | **      correct type of hour angle and declination in order to | 
|---|
| 27 | **      produce the required type of zenith distance.  In particular, | 
|---|
| 28 | **      it may be important to distinguish between the zenith distance | 
|---|
| 29 | **      as affected by refraction, which would require the "observed" | 
|---|
| 30 | **      HA,Dec, and the zenith distance in vacuo, which would require | 
|---|
| 31 | **      the "topocentric" HA,Dec.  If the effects of diurnal aberration | 
|---|
| 32 | **      can be neglected, the "apparent" HA,Dec may be used instead of | 
|---|
| 33 | **      the topocentric HA,Dec. | 
|---|
| 34 | ** | 
|---|
| 35 | **  3)  No range checking of arguments is done. | 
|---|
| 36 | ** | 
|---|
| 37 | **  4)  In applications which involve many zenith distance calculations, | 
|---|
| 38 | **      rather than calling the present routine it will be more efficient | 
|---|
| 39 | **      to use inline code, having previously computed fixed terms such | 
|---|
| 40 | **      as sine and cosine of latitude, and perhaps sine and cosine of | 
|---|
| 41 | **      declination. | 
|---|
| 42 | ** | 
|---|
| 43 | **  Last revision:   4 April 1994 | 
|---|
| 44 | ** | 
|---|
| 45 | **  Copyright P.T.Wallace.  All rights reserved. | 
|---|
| 46 | */ | 
|---|
| 47 | { | 
|---|
| 48 | double sh, ch, sd, cd, sp, cp, x, y, z; | 
|---|
| 49 |  | 
|---|
| 50 | sh = sin ( ha ); | 
|---|
| 51 | ch = cos ( ha ); | 
|---|
| 52 | sd = sin ( dec ); | 
|---|
| 53 | cd = cos ( dec ); | 
|---|
| 54 | sp = sin ( phi ); | 
|---|
| 55 | cp = cos ( phi ); | 
|---|
| 56 |  | 
|---|
| 57 | x = ch * cd * sp - sd * cp; | 
|---|
| 58 | y = sh * cd; | 
|---|
| 59 | z = ch * cd * cp + sd * sp; | 
|---|
| 60 |  | 
|---|
| 61 | return atan2 ( sqrt ( x * x + y * y ), z ); | 
|---|
| 62 | } | 
|---|