1 | #include "slalib.h"
|
---|
2 | #include "slamac.h"
|
---|
3 | void slaFk5hz ( double r5, double d5, double epoch, double *rh, double *dh )
|
---|
4 | /*
|
---|
5 | ** - - - - - - - - -
|
---|
6 | ** s l a F k 5 h z
|
---|
7 | ** - - - - - - - - -
|
---|
8 | **
|
---|
9 | ** Transform an FK5 (J2000) star position into the frame of the
|
---|
10 | ** Hipparcos catalogue, assuming zero Hipparcos proper motion.
|
---|
11 | **
|
---|
12 | ** (double precision)
|
---|
13 | **
|
---|
14 | ** This routine converts a star position from the FK5 system to
|
---|
15 | ** the Hipparcos system, in such a way that the Hipparcos proper
|
---|
16 | ** motion is zero. Because such a star has, in general, a non-zero
|
---|
17 | ** proper motion in the FK5 system, the routine requires the epoch
|
---|
18 | ** at which the position in the FK5 system was determined.
|
---|
19 | **
|
---|
20 | ** Given:
|
---|
21 | ** r5 double FK5 RA (radians), equinox J2000, epoch EPOCH
|
---|
22 | ** d5 double FK5 Dec (radians), equinox J2000, epoch EPOCH
|
---|
23 | ** epoch double Julian epoch (TDB)
|
---|
24 | **
|
---|
25 | ** Returned (all Hipparcos):
|
---|
26 | ** rh double RA (radians)
|
---|
27 | ** dh double Dec (radians)
|
---|
28 | **
|
---|
29 | ** Called: slaDcs2c, slaDav2m, slaDimxv, slaDmxv, slaDcc2s, slaDranrm
|
---|
30 | **
|
---|
31 | ** Notes:
|
---|
32 | **
|
---|
33 | ** 1) The FK5 to Hipparcos transformation consists of a pure
|
---|
34 | ** rotation and spin; zonal errors in the FK5 catalogue are
|
---|
35 | ** not taken into account.
|
---|
36 | **
|
---|
37 | ** 2) The published orientation and spin components are interpreted
|
---|
38 | ** as "axial vectors". An axial vector points at the pole of the
|
---|
39 | ** rotation and its length is the amount of rotation in radians.
|
---|
40 | **
|
---|
41 | ** 3) See also slaFk52h, slaH2fk5, slaHfk5z.
|
---|
42 | **
|
---|
43 | ** Reference:
|
---|
44 | **
|
---|
45 | ** M.Feissel & F.Mignard, Astron. Astrophys. 331, L33-L36 (1998).
|
---|
46 | **
|
---|
47 | ** Last revision: 22 June 1999
|
---|
48 | **
|
---|
49 | ** Copyright P.T.Wallace. All rights reserved.
|
---|
50 | */
|
---|
51 |
|
---|
52 | #define AS2R 0.484813681109535994e-5 /* arcseconds to radians */
|
---|
53 |
|
---|
54 | {
|
---|
55 | /* FK5 to Hipparcos orientation and spin (radians, radians/year) */
|
---|
56 | static double ortn[3] = { -19.9e-3 * AS2R,
|
---|
57 | -9.1e-3 * AS2R,
|
---|
58 | 22.9e-3 * AS2R },
|
---|
59 | s5[3] = { -0.30e-3 * AS2R,
|
---|
60 | 0.60e-3 * AS2R,
|
---|
61 | 0.70e-3 * AS2R };
|
---|
62 |
|
---|
63 | double p5e[3], r5h[3][3], t, vst[3], rst[3][3], p5[3], ph[3], w;
|
---|
64 | int i;
|
---|
65 |
|
---|
66 |
|
---|
67 | /* FK5 barycentric position vector. */
|
---|
68 | slaDcs2c ( r5, d5, p5e );
|
---|
69 |
|
---|
70 | /* FK5 to Hipparcos orientation matrix. */
|
---|
71 | slaDav2m ( ortn, r5h );
|
---|
72 |
|
---|
73 | /* Time interval from epoch to J2000. */
|
---|
74 | t = 2000.0 - epoch;
|
---|
75 |
|
---|
76 | /* Axial vector: accumulated Hipparcos wrt FK5 spin over that interval. */
|
---|
77 | for ( i = 0; i < 3; i++ ) {
|
---|
78 | vst [ i ] = s5 [ i ] * t;
|
---|
79 | }
|
---|
80 |
|
---|
81 | /* Express the accumulated spin as a rotation matrix. */
|
---|
82 | slaDav2m ( vst, rst );
|
---|
83 |
|
---|
84 | /* Derotate the vector's FK5 axes back to epoch. */
|
---|
85 | slaDimxv ( rst, p5e, p5 );
|
---|
86 |
|
---|
87 | /* Rotate the vector into the Hipparcos frame. */
|
---|
88 | slaDmxv ( r5h, p5, ph );
|
---|
89 |
|
---|
90 | /* Hipparcos vector to spherical. */
|
---|
91 | slaDcc2s ( ph, &w, dh );
|
---|
92 | *rh = slaDranrm ( w );
|
---|
93 | }
|
---|