/rust/registry/src/index.crates.io-1949cf8c6b5b557f/sofars-0.6.1/src/astro/atccq.rs
Line | Count | Source |
1 | | use super::{IauAstrom, pmpx}; |
2 | | use crate::vm::{anp, c2s}; |
3 | | |
4 | | /// Quick catalog −> astrometric |
5 | | /// |
6 | | /// Quick transformation of a star's ICRS catalog entry (epoch J2000.0) |
7 | | /// into ICRS astrometric place, given precomputed star-independent |
8 | | /// astrometry parameters. |
9 | | /// |
10 | | /// Use of this function is appropriate when efficiency is important and |
11 | | /// where many star positions are to be transformed for one date. The |
12 | | /// star-independent parameters can be obtained by calling one of the |
13 | | /// functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. |
14 | | /// |
15 | | /// If the parallax and proper motions are zero the transformation has |
16 | | /// no effect. |
17 | | /// |
18 | | /// This function is part of the International Astronomical Union's |
19 | | /// SOFA (Standards of Fundamental Astronomy) software collection. |
20 | | /// |
21 | | /// Status: support function. |
22 | | /// |
23 | | /// Given: |
24 | | /// ``` |
25 | | /// rc,dc double ICRS RA,Dec at J2000.0 (radians) |
26 | | /// pr double RA proper motion (radians/year, Note 3) |
27 | | /// pd double Dec proper motion (radians/year) |
28 | | /// px double parallax (arcsec) |
29 | | /// rv double radial velocity (km/s, +ve if receding) |
30 | | /// astrom iauASTROM* star-independent astrometry parameters: |
31 | | /// pmt double PM time interval (SSB, Julian years) |
32 | | /// eb double[3] SSB to observer (vector, au) |
33 | | /// eh double[3] Sun to observer (unit vector) |
34 | | /// em double distance from Sun to observer (au) |
35 | | /// v double[3] barycentric observer velocity (vector, c) |
36 | | /// bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor |
37 | | /// bpn double[3][3] bias-precession-nutation matrix |
38 | | /// along double longitude + s' (radians) |
39 | | /// xpl double polar motion xp wrt local meridian (radians) |
40 | | /// ypl double polar motion yp wrt local meridian (radians) |
41 | | /// sphi double sine of geodetic latitude |
42 | | /// cphi double cosine of geodetic latitude |
43 | | /// diurab double magnitude of diurnal aberration vector |
44 | | /// eral double "local" Earth rotation angle (radians) |
45 | | /// refa double refraction constant A (radians) |
46 | | /// refb double refraction constant B (radians) |
47 | | /// ``` |
48 | | /// Returned: |
49 | | /// ``` |
50 | | /// ra,da double* ICRS astrometric RA,Dec (radians) |
51 | | /// ``` |
52 | | /// Notes: |
53 | | /// |
54 | | /// 1) All the vectors are with respect to BCRS axes. |
55 | | /// |
56 | | /// 2) Star data for an epoch other than J2000.0 (for example from the |
57 | | /// Hipparcos catalog, which has an epoch of J1991.25) will require a |
58 | | /// preliminary call to iauPmsafe before use. |
59 | | /// |
60 | | /// 3) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. |
61 | | /// |
62 | | /// Called: |
63 | | /// ``` |
64 | | /// iauPmpx proper motion and parallax |
65 | | /// iauC2s p-vector to spherical |
66 | | /// iauAnp normalize angle into range 0 to 2pi |
67 | | /// ``` |
68 | 0 | pub fn atccq( |
69 | 0 | rc: f64, |
70 | 0 | dc: f64, |
71 | 0 | pr: f64, |
72 | 0 | pd: f64, |
73 | 0 | px: f64, |
74 | 0 | rv: f64, |
75 | 0 | astrom: &IauAstrom, |
76 | 0 | ) -> (f64, f64) { |
77 | | /* Proper motion and parallax, giving BCRS coordinate direction. */ |
78 | 0 | let p = pmpx(rc, dc, pr, pd, px, rv, astrom.pmt, astrom.eb); |
79 | | |
80 | | /* ICRS astrometric RA,Dec. */ |
81 | 0 | let (w, da) = c2s(&p); |
82 | 0 | let ra = anp(w); |
83 | | |
84 | 0 | (ra, da) |
85 | 0 | } |