| 1 | #include "slalib.h" | 
|---|
| 2 | #include "slamac.h" | 
|---|
| 3 | void slaH2fk5 ( double rh, double dh, double drh, double ddh, | 
|---|
| 4 | double *r5, double *d5, double *dr5, double *dd5 ) | 
|---|
| 5 | /* | 
|---|
| 6 | **  - - - - - - - - - | 
|---|
| 7 | **   s l a H 2 f k 5 | 
|---|
| 8 | **  - - - - - - - - - | 
|---|
| 9 | ** | 
|---|
| 10 | **  Transform Hipparcos star data into the FK5 (J2000) system. | 
|---|
| 11 | ** | 
|---|
| 12 | **  (double precision) | 
|---|
| 13 | ** | 
|---|
| 14 | **  This routine transforms Hipparcos star positions and proper | 
|---|
| 15 | **  motions into FK5 J2000. | 
|---|
| 16 | ** | 
|---|
| 17 | **  Given (all Hipparcos, epoch J2000): | 
|---|
| 18 | **     rh      double    RA (radians) | 
|---|
| 19 | **     dh      double    Dec (radians) | 
|---|
| 20 | **     drh     double    proper motion in RA (dRA/dt, rad/Jyear) | 
|---|
| 21 | **     ddh     double    proper motion in Dec (dDec/dt, rad/Jyear) | 
|---|
| 22 | ** | 
|---|
| 23 | **  Returned (all FK5, equinox J2000, Epoch J2000): | 
|---|
| 24 | **     r5      double    RA (radians) | 
|---|
| 25 | **     d5      double    Dec (radians) | 
|---|
| 26 | **     dr5     double    proper motion in RA (dRA/dt, rad/Jyear) | 
|---|
| 27 | **     dd5     double    proper motion in Dec (dDec/dt, rad/Jyear) | 
|---|
| 28 | ** | 
|---|
| 29 | **  Called:  slaDs2c6, slaDav2m, slaDmxv, slaDimxv, slaDvxv, | 
|---|
| 30 | **           slaDc62s, slaDranrm | 
|---|
| 31 | ** | 
|---|
| 32 | **  Notes: | 
|---|
| 33 | ** | 
|---|
| 34 | **  1)  The proper motions in RA are dRA/dt rather than | 
|---|
| 35 | **      cos(Dec)*dRA/dt, and are per year rather than per century. | 
|---|
| 36 | ** | 
|---|
| 37 | **  2)  The FK5 to Hipparcos transformation consists of a pure | 
|---|
| 38 | **      rotation and spin;  zonal errors in the FK5 catalogue are | 
|---|
| 39 | **      not taken into account. | 
|---|
| 40 | ** | 
|---|
| 41 | **  3)  The published orientation and spin components are interpreted | 
|---|
| 42 | **      as "axial vectors".  An axial vector points at the pole of the | 
|---|
| 43 | **      rotation and its length is the amount of rotation in radians. | 
|---|
| 44 | ** | 
|---|
| 45 | **  4)  See also slaFk52h, slaFk5hz, slaHfk5z. | 
|---|
| 46 | ** | 
|---|
| 47 | **  Reference: | 
|---|
| 48 | ** | 
|---|
| 49 | **     M.Feissel & F.Mignard, Astron. Astrophys. 331, L33-L36 (1998). | 
|---|
| 50 | ** | 
|---|
| 51 | **  Last revision:   22 June 1999 | 
|---|
| 52 | ** | 
|---|
| 53 | **  Copyright P.T.Wallace.  All rights reserved. | 
|---|
| 54 | */ | 
|---|
| 55 |  | 
|---|
| 56 | #define AS2R 0.484813681109535994e-5    /* arcseconds to radians */ | 
|---|
| 57 |  | 
|---|
| 58 | { | 
|---|
| 59 | /* FK5 to Hipparcos orientation and spin (radians, radians/year) */ | 
|---|
| 60 | static double ortn[3] = { -19.9e-3 * AS2R, | 
|---|
| 61 | -9.1e-3 * AS2R, | 
|---|
| 62 | 22.9e-3 * AS2R }, | 
|---|
| 63 | s5[3] = { -0.30e-3 * AS2R, | 
|---|
| 64 | 0.60e-3 * AS2R, | 
|---|
| 65 | 0.70e-3 * AS2R }; | 
|---|
| 66 |  | 
|---|
| 67 | double pvh[6], r5h[3][3], sh[3], vv[3], pv5[6], w, r, v; | 
|---|
| 68 | int i; | 
|---|
| 69 |  | 
|---|
| 70 |  | 
|---|
| 71 | /* Hipparcos barycentric position/velocity 6-vector (normalized). */ | 
|---|
| 72 | slaDs2c6 ( rh, dh, 1.0, drh, ddh, 0.0, pvh ); | 
|---|
| 73 |  | 
|---|
| 74 | /* FK5 to Hipparcos orientation matrix. */ | 
|---|
| 75 | slaDav2m ( ortn, r5h ); | 
|---|
| 76 |  | 
|---|
| 77 | /* Rotate the spin vector into the Hipparcos frame. */ | 
|---|
| 78 | slaDmxv ( r5h, s5, sh ); | 
|---|
| 79 |  | 
|---|
| 80 | /* De-orient & de-spin the 6-vector into FK5 J2000. */ | 
|---|
| 81 | slaDimxv ( r5h, pvh, pv5 ); | 
|---|
| 82 | slaDvxv ( pvh, sh, vv ); | 
|---|
| 83 | for ( i = 0; i < 3; i++ ) { | 
|---|
| 84 | vv [ i ] = pvh [ i + 3 ] - vv [ i ]; | 
|---|
| 85 | } | 
|---|
| 86 | slaDimxv ( r5h, vv, pv5 + 3 ); | 
|---|
| 87 |  | 
|---|
| 88 | /* FK5 6-vector to spherical. */ | 
|---|
| 89 | slaDc62s ( pv5, &w, d5, &r, dr5, dd5, &v ); | 
|---|
| 90 | *r5 = slaDranrm ( w ); | 
|---|
| 91 | } | 
|---|