Coverage Report

Created: 2026-07-30 06:46

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
}