2011-03-25 02:03:05 +00:00
|
|
|
#ifndef SGDP4_H_
|
|
|
|
#define SGDP4_H_
|
|
|
|
|
|
|
|
#include "Tle.h"
|
|
|
|
|
2011-03-25 15:06:32 +00:00
|
|
|
class SGDP4 {
|
2011-03-25 02:03:05 +00:00
|
|
|
public:
|
2011-03-25 15:06:32 +00:00
|
|
|
SGDP4(void);
|
|
|
|
virtual ~SGDP4(void);
|
2011-03-25 02:03:05 +00:00
|
|
|
|
2011-03-26 18:24:34 +00:00
|
|
|
void SetTle(const Tle& tle);
|
2011-03-25 02:03:05 +00:00
|
|
|
|
2011-03-25 15:51:11 +00:00
|
|
|
void FindPosition(double tsince);
|
2011-03-25 15:06:32 +00:00
|
|
|
|
|
|
|
struct TleData {
|
2011-03-25 02:03:05 +00:00
|
|
|
double bstar;
|
|
|
|
double eo;
|
|
|
|
double omega;
|
|
|
|
double xincl;
|
|
|
|
double xmo;
|
|
|
|
double xno;
|
|
|
|
double xnodeo;
|
|
|
|
Julian epoch;
|
|
|
|
};
|
2011-03-25 15:06:32 +00:00
|
|
|
|
2011-03-25 02:03:05 +00:00
|
|
|
private:
|
2011-03-26 19:17:12 +00:00
|
|
|
void Initialize(const double& theta2, const double& betao2, const double& betao);
|
2011-03-26 18:24:34 +00:00
|
|
|
|
2011-03-25 15:06:32 +00:00
|
|
|
bool first_run_;
|
|
|
|
|
|
|
|
double cosio_;
|
|
|
|
double sinio_;
|
|
|
|
double x3thm1_;
|
|
|
|
|
|
|
|
double eta_;
|
|
|
|
double coef1_;
|
|
|
|
double c1_;
|
|
|
|
double a3ovk2_;
|
|
|
|
double x1mth2_;
|
|
|
|
double c4_;
|
|
|
|
double c5_;
|
2011-03-25 16:30:18 +00:00
|
|
|
|
2011-03-25 15:06:32 +00:00
|
|
|
double xmdot_;
|
|
|
|
double omgdot_;
|
|
|
|
double xnodot_;
|
|
|
|
double xnodcf_;
|
|
|
|
double t2cof_;
|
|
|
|
double xlcof_;
|
|
|
|
double aycof_;
|
|
|
|
double x7thm1_;
|
|
|
|
double omgcof_;
|
|
|
|
double xmcof_;
|
|
|
|
double delmo_;
|
|
|
|
double sinmo_;
|
|
|
|
|
|
|
|
double d2_;
|
|
|
|
double d3_;
|
|
|
|
double d4_;
|
|
|
|
double t3cof_;
|
|
|
|
double t4cof_;
|
|
|
|
double t5cof_;
|
|
|
|
|
|
|
|
double gsto_;
|
2011-03-25 02:03:05 +00:00
|
|
|
|
2011-03-25 15:06:32 +00:00
|
|
|
bool use_simple_model_;
|
|
|
|
bool use_deep_space_;
|
2011-03-26 18:24:34 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* XMO
|
|
|
|
*/
|
|
|
|
double MeanAnomoly() const {
|
|
|
|
return mean_anomoly_;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* XNODEO
|
|
|
|
*/
|
|
|
|
double AscendingNode() const {
|
|
|
|
return ascending_node_;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* OMEGAO
|
|
|
|
*/
|
|
|
|
double ArgumentPerigee() const {
|
|
|
|
return argument_perigee_;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* EO
|
|
|
|
*/
|
|
|
|
double Eccentricity() const {
|
|
|
|
return eccentricity_;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* XINCL
|
|
|
|
*/
|
|
|
|
double Inclination() const {
|
|
|
|
return inclination_;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* XNO
|
|
|
|
*/
|
|
|
|
double MeanMotion() const {
|
|
|
|
return mean_motion_;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* BSTAR
|
|
|
|
*/
|
|
|
|
double BStar() const {
|
|
|
|
return bstar_;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* AODP
|
|
|
|
*/
|
|
|
|
double RecoveredSemiMajorAxis() const {
|
2011-03-26 19:17:12 +00:00
|
|
|
return recovered_semi_major_axis_;
|
2011-03-26 18:24:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* XNODP
|
|
|
|
*/
|
|
|
|
double RecoveredMeanMotion() const {
|
|
|
|
return recovered_mean_motion_;
|
|
|
|
}
|
|
|
|
|
2011-03-26 19:17:12 +00:00
|
|
|
/*
|
|
|
|
* PERIGE
|
|
|
|
*/
|
|
|
|
double Perigee() const {
|
|
|
|
return perigee_;
|
|
|
|
}
|
|
|
|
|
|
|
|
double Period() const {
|
|
|
|
return period_;
|
|
|
|
}
|
|
|
|
|
2011-03-26 18:24:34 +00:00
|
|
|
/*
|
|
|
|
* EPOCH
|
|
|
|
*/
|
|
|
|
Julian Epoch() const {
|
|
|
|
return epoch_;
|
|
|
|
}
|
|
|
|
|
|
|
|
double mean_anomoly_;
|
|
|
|
double ascending_node_;
|
|
|
|
double argument_perigee_;
|
|
|
|
double eccentricity_;
|
|
|
|
double inclination_;
|
|
|
|
double mean_motion_;
|
|
|
|
double bstar_;
|
2011-03-26 19:17:12 +00:00
|
|
|
double recovered_semi_major_axis_;
|
2011-03-26 18:24:34 +00:00
|
|
|
double recovered_mean_motion_;
|
2011-03-26 19:17:12 +00:00
|
|
|
double perigee_;
|
|
|
|
double period_;
|
2011-03-26 18:24:34 +00:00
|
|
|
Julian epoch_;
|
|
|
|
|
2011-03-25 02:03:05 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|