1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use crate;
/// Assemble the celestial to terrestrial matrix from equinox-based
/// components (the celestial-to-true matrix, the Greenwich Apparent
/// Sidereal Time and the polar motion matrix).
///
/// Given:
/// rbpn [[f64; 3]; 3] celestial-to-true matrix
/// gst f64 Greenwich (apparent) Sidereal Time (radians)
/// rpom [[f64; 3]; 3] polar-motion matrix
///
/// Returned (function value):
/// [[f64; 3]; 3] celestial-to-terrestrial matrix (Note 2)
///
/// Notes:
///
/// 1) This function constructs the rotation matrix that transforms
/// vectors in the celestial system into vectors in the terrestrial
/// system. It does so starting from precomputed components, namely
/// the matrix which rotates from celestial coordinates to the
/// true equator and equinox of date, the Greenwich Apparent Sidereal
/// Time and the polar motion matrix. One use of the present function
/// is when generating a series of celestial-to-terrestrial matrices
/// where only the Sidereal Time changes, avoiding the considerable
/// overhead of recomputing the precession-nutation more often than
/// necessary to achieve given accuracy objectives.
///
/// 2) The relationship between the arguments is as follows:
///
/// [TRS] = rpom * R_3(gst) * rbpn * [CRS]
///
/// = rc2t * [CRS]
///
/// where [CRS] is a vector in the Geocentric Celestial Reference
/// System and [TRS] is a vector in the International Terrestrial
/// Reference System (see IERS Conventions 2003).
///
/// Called:
/// iauCr copy r-matrix
/// iauRz rotate around Z-axis
/// iauRxr product of two r-matrices
///
/// Reference:
///
/// McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
/// IERS Technical Note No. 32, BKG (2004)