.. _program_listing_file_applications_ephemeris_lunanet_almanac.h: Program Listing for File lunanet_almanac.h ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``applications/ephemeris/lunanet_almanac.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include "lupnt/applications/ephemeris/lunanet_ephemeris.h" #include "lupnt/core/constants.h" #include "lupnt/core/definitions.h" namespace lupnt { struct AlmanacFitOptions { int poly_order = 1; int num_fourier_terms = 1; double gm = GM_MOON; double sidereal_period_s = 27.321661 * SECS_DAY; Frame frame = Frame::MOON_CI; }; class LansAlmanac { public: LansAlmanac() = default; explicit LansAlmanac(AlmanacFitOptions options) : options_(options) {} VecXd Fit(const VecXd& t_s, const MatXd& rv) const; MatXd Eval(const VecXd& t_s, const VecXd& params) const; EphemerisFitErrorStats EvalError(const VecXd& t_s, const MatXd& rv_ref, const VecXd& params) const; int NumParams() const; std::vector ParamNames() const; const AlmanacFitOptions& GetOptions() const { return options_; } private: AlmanacFitOptions options_; }; } // namespace lupnt