| 1 | #include "slalib.h"
|
|---|
| 2 | #include "slamac.h"
|
|---|
| 3 | void slaPrecl ( double ep0, double ep1, double rmatp[3][3] )
|
|---|
| 4 | /*
|
|---|
| 5 | ** - - - - - - - - -
|
|---|
| 6 | ** s l a P r e c l
|
|---|
| 7 | ** - - - - - - - - -
|
|---|
| 8 | **
|
|---|
| 9 | ** Form the matrix of precession between two epochs, using the
|
|---|
| 10 | ** model of Simon et al (1994), which is suitable for long
|
|---|
| 11 | ** periods of time.
|
|---|
| 12 | **
|
|---|
| 13 | ** (double precision)
|
|---|
| 14 | **
|
|---|
| 15 | ** Given:
|
|---|
| 16 | ** ep0 double beginning epoch
|
|---|
| 17 | ** ep1 double ending epoch
|
|---|
| 18 | **
|
|---|
| 19 | ** Returned:
|
|---|
| 20 | ** rmatp double[3][3] precession matrix
|
|---|
| 21 | **
|
|---|
| 22 | ** Notes:
|
|---|
| 23 | **
|
|---|
| 24 | ** 1) The epochs are TDB (loosely ET) Julian epochs.
|
|---|
| 25 | **
|
|---|
| 26 | ** 2) The matrix is in the sense v(ep1) = rmatp * v(ep0) .
|
|---|
| 27 | **
|
|---|
| 28 | ** 3) The absolute accuracy of the model is limited by the
|
|---|
| 29 | ** uncertainty in the general precession, about 0.3 arcsec per
|
|---|
| 30 | ** 1000 years. The remainder of the formulation provides a
|
|---|
| 31 | ** precision of 1 mas over the interval from 1000AD to 3000AD,
|
|---|
| 32 | ** 0.1 arcsec from 1000BC to 5000AD and 1 arcsec from
|
|---|
| 33 | ** 4000BC to 8000AD.
|
|---|
| 34 | **
|
|---|
| 35 | ** Reference:
|
|---|
| 36 | ** Simon, J.L., et al., 1994. Astron.Astrophys., 282, 663-683.
|
|---|
| 37 | **
|
|---|
| 38 | ** Called: slaDeuler
|
|---|
| 39 | **
|
|---|
| 40 | ** Defined in slamac.h: DAS2R
|
|---|
| 41 | **
|
|---|
| 42 | ** Last revision: 23 August 1994
|
|---|
| 43 | **
|
|---|
| 44 | ** Copyright P.T.Wallace. All rights reserved.
|
|---|
| 45 | */
|
|---|
| 46 | {
|
|---|
| 47 | double t0, t, tas2r, w, zeta, z, theta;
|
|---|
| 48 |
|
|---|
| 49 | /* Interval between basic epoch J2000.0 and beginning epoch (1000JY) */
|
|---|
| 50 | t0 = ( ep0 - 2000.0 ) / 1000.0;
|
|---|
| 51 |
|
|---|
| 52 | /* Interval over which precession required (1000JY) */
|
|---|
| 53 | t = ( ep1 - ep0 ) / 1000.0;
|
|---|
| 54 |
|
|---|
| 55 | /* Euler angles */
|
|---|
| 56 | tas2r = t * DAS2R;
|
|---|
| 57 | w = 23060.9097 +
|
|---|
| 58 | ( 139.7459 +
|
|---|
| 59 | ( - 0.0038 +
|
|---|
| 60 | ( - 0.5918 +
|
|---|
| 61 | ( - 0.0037 +
|
|---|
| 62 | 0.0007 * t0 ) * t0 ) * t0 ) * t0 ) * t0;
|
|---|
| 63 |
|
|---|
| 64 | zeta = ( w +
|
|---|
| 65 | ( 30.2226 +
|
|---|
| 66 | ( - 0.2523 +
|
|---|
| 67 | ( - 0.3840 +
|
|---|
| 68 | ( - 0.0014 +
|
|---|
| 69 | 0.0007 * t0 ) * t0 ) * t0 ) * t0 +
|
|---|
| 70 | ( 18.0183 +
|
|---|
| 71 | ( - 0.1326 +
|
|---|
| 72 | ( 0.0006 +
|
|---|
| 73 | 0.0005 * t0 ) * t0 ) * t0 +
|
|---|
| 74 | ( - 0.0583 +
|
|---|
| 75 | ( - 0.0001 +
|
|---|
| 76 | 0.0007 * t0 ) * t0 +
|
|---|
| 77 | ( - 0.0285 +
|
|---|
| 78 | ( - 0.0002 ) * t ) * t ) * t ) * t ) * t ) * tas2r;
|
|---|
| 79 |
|
|---|
| 80 | z = ( w +
|
|---|
| 81 | ( 109.5270 +
|
|---|
| 82 | ( 0.2446 +
|
|---|
| 83 | ( - 1.3913 +
|
|---|
| 84 | ( - 0.0134 +
|
|---|
| 85 | 0.0026 * t0 ) * t0 ) * t0 ) * t0 +
|
|---|
| 86 | ( 18.2667 +
|
|---|
| 87 | ( - 1.1400 +
|
|---|
| 88 | ( - 0.0173 +
|
|---|
| 89 | 0.0044 * t0 ) * t0 ) * t0 +
|
|---|
| 90 | ( - 0.2821 +
|
|---|
| 91 | ( - 0.0093 +
|
|---|
| 92 | 0.0032 * t0 ) * t0 +
|
|---|
| 93 | ( -0.0301 +
|
|---|
| 94 | 0.0006 * t0
|
|---|
| 95 | - 0.0001 * t ) * t ) * t ) * t ) * t ) * tas2r;
|
|---|
| 96 |
|
|---|
| 97 | theta = ( 20042.0207 +
|
|---|
| 98 | ( - 85.3131 +
|
|---|
| 99 | ( - 0.2111 +
|
|---|
| 100 | ( 0.3642 +
|
|---|
| 101 | ( 0.0008 +
|
|---|
| 102 | ( - 0.0005 ) * t0 ) * t0 ) * t0 ) * t0 ) * t0 +
|
|---|
| 103 | ( - 42.6566 +
|
|---|
| 104 | ( - 0.2111 +
|
|---|
| 105 | ( 0.5463 +
|
|---|
| 106 | ( 0.0017 +
|
|---|
| 107 | ( - 0.0012 ) * t0 ) * t0 ) * t0 ) * t0 +
|
|---|
| 108 | ( - 41.8238 +
|
|---|
| 109 | ( 0.0359 +
|
|---|
| 110 | ( 0.0027 +
|
|---|
| 111 | ( - 0.0001 ) * t0 ) * t0 ) * t0 +
|
|---|
| 112 | ( - 0.0731 +
|
|---|
| 113 | ( 0.0019 +
|
|---|
| 114 | 0.0009 * t0 ) * t0 +
|
|---|
| 115 | ( - 0.0127 +
|
|---|
| 116 | 0.0011 * t0 + 0.0004 * t ) * t ) * t ) * t ) * t ) * tas2r;
|
|---|
| 117 |
|
|---|
| 118 | /* Rotation matrix */
|
|---|
| 119 | slaDeuler ( "ZYZ", -zeta, theta, -z, rmatp );
|
|---|
| 120 | }
|
|---|