.. _program_listing_file_conversions_frame_conversions.h: Program Listing for File frame_conversions.h ============================================ |exhale_lsh| :ref:`Return to documentation for file ` (``conversions/frame_conversions.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "lupnt/core/constants.h" #include "lupnt/interfaces/spice_cheby.h" namespace lupnt { Vec6 ItrfToGcrf(Real t_tdb, const Vec6& rv_itrf); Vec3 ItrfToGcrf(Real t_tdb, const Vec3& rv_itrf); Vec6 GcrfToItrf(Real t_tdb, const Vec6& rv_gcrf); Vec3 GcrfToItrf(Real t_tdb, const Vec3& rv_gcrf); Vec6 GcrfToEme(const Vec6& rv_gcrf); Vec3 GcrfToEme(const Vec3& rv_gcrf); Vec6 EmeToGcrf(const Vec6& rv_eme); Vec3 EmeToGcrf(const Vec3& rv_eme); Vec6 GcrfToIcrf(Real t_tdb, const Vec6& rv_gcrf); Vec3 GcrfToIcrf(Real t_tdb, const Vec3& rv_gcrf); Vec6 IcrfToGcrf(Real t_tdb, const Vec6& rv_icrf); Vec3 IcrfToGcrf(Real t_tdb, const Vec3& rv_icrf); Vec6 GcrfToMoonCi(Real t_tdb, const Vec6& rv_gcrf); Vec3 GcrfToMoonCi(Real t_tdb, const Vec3& rv_gcrf); Vec6 MoonCiToGcrf(Real t_tdb, const Vec6& rv_mi); Vec3 MoonCiToGcrf(Real t_tdb, const Vec3& rv_mi); Vec6 MoonCiToPa(Real t_tdb, const Vec6& rv_mi); Vec3 MoonCiToPa(Real t_tdb, const Vec3& rv_mi); Vec6 MoonPaToCi(Real t_tdb, const Vec6& rv_pa); Vec3 MoonPaToCi(Real t_tdb, const Vec3& rv_pa); Vec6 MoonPaToMe(const Vec6& rv_pa); Vec3 MoonPaToMe(const Vec3& rv_pa); Vec6 MoonMeToPa(const Vec6& rv_me); Vec3 MoonMeToPa(const Vec3& rv_me); Vec6 GcrfToEmr(Real t_tdb, const Vec6& rv_gcrf); Vec3 GcrfToEmr(Real t_tdb, const Vec3& rv_gcrf); Vec6 EmrToGcrf(Real t_tdb, const Vec6& rv_emr); Vec3 EmrToGcrf(Real t_tdb, const Vec3& rv_emr); Vec6 MoonCiToOp(Real t_tdb, const Vec6& rv_ci); Vec3 MoonCiToOp(Real t_tdb, const Vec3& rv_ci); Vec6 MoonOpToCi(Real t_tdb, const Vec6& rv_op); Vec3 MoonOpToCi(Real t_tdb, const Vec3& rv_op); // Rotations Mat3 RotPrecessionNutation(Real t_tdb); Mat3 RotSideralMotion(Real t_tdb); Mat3 RotSideralMotionDot(Real t_tdb); Mat3 RotPolarMotion(Real t_tdb); Mat3d RotGcrfToEme(); Mat3d RotGcrfToEmeFirstOrder(); Mat3d RotGcrfToEmeSecondOrder(); Mat3 RotMoonCiToPa(Real t_tdb, Mat3* R_mi2pa_dot = nullptr); Mat3d RotMoonPaToMe(); Mat3 RotMoonOpToCi(Real t_tdb); // --------------------------------------------------------------------- // SPICE-derived Earth orientation parameters (EOP) // --------------------------------------------------------------------- struct SpiceEopParams { Real x_pole; Real y_pole; Real ut1_utc; }; SpiceEopParams ComputeEopFromSpice(Real t_tdb); // --------------------------------------------------------------------- // SPICE-fitted high-accuracy Earth/lunar orientation (initialization) // --------------------------------------------------------------------- void InitFrameConversionFromSpice(Real t_start_tdb, Real t_end_tdb, Real segment_length_s = 86400.0, int num_coeffs = 13); void ClearFrameConversionFit(); bool HasFittedEarthOrientation(Real t_tdb); bool HasFittedLunarOrientation(Real t_tdb); } // namespace lupnt