Program Listing for File lunanet_almanac.h¶
↰ Return to documentation for file (applications/ephemeris/lunanet_almanac.h)
#pragma once
#include <string>
#include <vector>
#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<std::string> ParamNames() const;
const AlmanacFitOptions& GetOptions() const { return options_; }
private:
AlmanacFitOptions options_;
};
} // namespace lupnt