source: trunk/MagicSoft/slalib/e2h.c@ 13414

Last change on this file since 13414 was 731, checked in by tbretz, 24 years ago
*** empty log message ***
  • Property svn:executable set to *
File size: 2.4 KB
Line 
1#include "slalib.h"
2#include "slamac.h"
3void slaE2h ( float ha, float dec, float phi, float *az, float *el )
4/*
5** - - - - - - -
6** s l a E 2 h
7** - - - - - - -
8**
9** Equatorial to horizon coordinates: HA,Dec to Az,El
10**
11** (single precision)
12**
13** Given:
14** ha float hour angle
15** dec float declination
16** phi float observatory latitude
17**
18** Returned:
19** *az float azimuth
20** *el float elevation
21**
22** Notes:
23**
24** 1) All the arguments are angles in radians.
25**
26** 2) Azimuth is returned in the range 0-2pi; north is zero,
27** and east is +pi/2. Elevation is returned in the range
28** +/-pi/2.
29**
30** 3) The latitude must be geodetic. In critical applications,
31** corrections for polar motion should be applied.
32**
33** 4) In some applications it will be important to specify the
34** correct type of hour angle and declination in order to
35** produce the required type of azimuth and elevation. In
36** particular, it may be important to distinguish between
37** elevation as affected by refraction, which would
38** require the "observed" HA,Dec, and the elevation
39** in vacuo, which would require the "topocentric" HA,Dec.
40** If the effects of diurnal aberration can be neglected, the
41** "apparent" HA,Dec may be used instead of the topocentric
42** HA,Dec.
43**
44** 5) No range checking of arguments is carried out.
45**
46** 6) In applications which involve many such calculations, rather
47** than calling the present routine it will be more efficient to
48** use inline code, having previously computed fixed terms such
49** as sine and cosine of latitude, and (for tracking a star)
50** sine and cosine of declination.
51**
52** Defined in slamac.h: D2PI
53**
54** Last revision: 10 July 1994
55**
56** Copyright P.T.Wallace. All rights reserved.
57*/
58{
59 float sh, ch, sd, cd, sp, cp, x, y, z, r, a;
60
61/* Useful trig functions */
62 sh = (float) sin ( ha );
63 ch = (float) cos ( ha );
64 sd = (float) sin ( dec );
65 cd = (float) cos ( dec );
66 sp = (float) sin ( phi );
67 cp = (float) cos ( phi );
68
69/* Az,El as x,y,z */
70 x = - ch * cd * sp + sd * cp;
71 y = - sh * cd;
72 z = ch * cd * cp + sd * sp;
73
74/* To spherical */
75 r = (float) sqrt ( x * x + y * y );
76 a = ( r == 0.0f ) ? 0.0f : (float) atan2 ( y, x ) ;
77 *az = ( a < 0.0f ) ? (float) ( (double) a + D2PI ) : a;
78 *el = (float) atan2 ( z, r );
79}
Note: See TracBrowser for help on using the repository browser.