8#include <janus/math/Trig.hpp>
21template <
typename Scalar>
25 c_ = janus::cos(rotation_angle);
26 s_ = janus::sin(rotation_angle);
31 c_ = janus::cos(angle);
32 s_ = janus::sin(angle);
36 [[nodiscard]] Vec3<Scalar>
37 to_parent(
const Vec3<Scalar> &v_ecef)
const override {
39 result(0) = c_ * v_ecef(0) - s_ * v_ecef(1);
40 result(1) = s_ * v_ecef(0) + c_ * v_ecef(1);
41 result(2) = v_ecef(2);
46 [[nodiscard]] Vec3<Scalar>
49 result(0) = c_ * v_eci(0) + s_ * v_eci(1);
50 result(1) = -s_ * v_eci(0) + c_ * v_eci(1);
60template <
typename Scalar>
61[[nodiscard]]
inline std::shared_ptr<ECEFProvider<Scalar>>
63 return std::make_shared<ECEFProvider<Scalar>>(angle);
66template <
typename Scalar>
67[[nodiscard]]
inline std::shared_ptr<ECEFProvider<Scalar>>
69 return std::make_shared<ECEFProvider<Scalar>>(model, t_seconds);
ECEFProvider(const EarthRotationModel &model, double t_seconds)
Definition ECEFProvider.hpp:29
Vec3< Scalar > to_parent(const Vec3< Scalar > &v_ecef) const override
ECEF -> ECI.
Definition ECEFProvider.hpp:37
ECEFProvider(Scalar rotation_angle)
Definition ECEFProvider.hpp:24
Vec3< Scalar > from_parent(const Vec3< Scalar > &v_eci) const override
ECI -> ECEF.
Definition ECEFProvider.hpp:47
Definition Aerodynamics.hpp:11
EarthRotationFidelity
Definition ECEFProvider.hpp:14
@ IAU2006
Definition ECEFProvider.hpp:17
@ GMST
Definition ECEFProvider.hpp:16
@ ConstantOmega
Definition ECEFProvider.hpp:15
std::shared_ptr< ECEFProvider< Scalar > > make_ecef_provider(Scalar angle)
Definition ECEFProvider.hpp:62
Definition EarthModel.hpp:75
virtual double ecef_to_eci_angle(double t_seconds) const
Definition EarthModel.hpp:85