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 | }
|
---|