Newer
Older
#ifndef orbit_time
#define orbit_time
#include <ctime>
#include "SystemCoords.h"
struct orbit_date
{
int years;
int mounts;
int days;
int hours;
int min;
int sec;
};
class Ot {
private:
const double m_correction = 69.184; // TAI UTC TT TAI
std::timespec c_time{ 0,0 };
ConvertSC m_matrix{};
public:
Ot() {
std::timespec_get(&c_time, TIME_UTC);
};
~Ot() {};
double getCurrent_US(double time_zone = 0) {
std::timespec_get(&c_time, TIME_UTC);
return (double(c_time.tv_sec)+ time_zone *3600 + c_time.tv_nsec * pow(10, -9));
};
double getCurrent_MJD(double time_zone =0) {
return convert_JD_to_MJD(convert_US_to_JD(getCurrent_US(time_zone)));
};
double getCurrent_TT(double time_zone = 0) {
return (getCurrent_MJD(time_zone) + m_correction / double(86400));
}
double getCurrent_TDB(double time_zone = 0);
double GMST(double deltuUT);
double GTST(double inputGMST);
//input_time must be in the format US
double convert_US_to_JD(double input_time, double time_zone = 0) {
return (2440587.5 + (input_time + time_zone *3600) / double(86400));
};
//input_time must be in the format JD
double convert_JD_to_MJD(double input_time) {
return (input_time - 2400000.5);
};
//input_time must be in the format MJD
double convert_MJD_to_TT(double input_time) {
return (input_time + m_correction / double(86400));
}
//input_time must be in the format TT
double convert_TT_to_TDB(double input_time);
double convert_GDs_to_MJD(orbit_date input_time);
};
#endif // !orbit_time.h