siderust/coordinates/transform/providers/
frames_teme.rs1use super::*;
20
21impl FrameRotationProvider<TEME, EquatorialTrueOfDate> for () {
22 #[inline]
23 fn rotation<Eph, Eop: EopProvider, Nut: NutationModel>(
24 jd: JulianDate,
25 _ctx: &AstroContext<Eph, Eop>,
26 ) -> Rotation3 {
27 let nut = Nut::nutation(jd);
28 Rotation3::rz(nut.dpsi * nut.mean_obliquity.cos())
29 }
30}
31
32impl FrameRotationProvider<EquatorialTrueOfDate, TEME> for () {
33 #[inline]
34 fn rotation<Eph, Eop: EopProvider, Nut: NutationModel>(
35 jd: JulianDate,
36 ctx: &AstroContext<Eph, Eop>,
37 ) -> Rotation3 {
38 inverse_rotation::<EquatorialTrueOfDate, TEME, Eph, Eop, Nut>(jd, ctx)
39 }
40}
41
42impl FrameRotationProvider<TEME, ICRS> for () {
43 #[inline]
44 fn rotation<Eph, Eop: EopProvider, Nut: NutationModel>(
45 jd: JulianDate,
46 ctx: &AstroContext<Eph, Eop>,
47 ) -> Rotation3 {
48 compose_rotation::<TEME, EquatorialTrueOfDate, ICRS, Eph, Eop, Nut>(jd, ctx)
49 }
50}
51
52impl FrameRotationProvider<ICRS, TEME> for () {
53 #[inline]
54 fn rotation<Eph, Eop: EopProvider, Nut: NutationModel>(
55 jd: JulianDate,
56 ctx: &AstroContext<Eph, Eop>,
57 ) -> Rotation3 {
58 inverse_rotation::<ICRS, TEME, Eph, Eop, Nut>(jd, ctx)
59 }
60}