| 1 |
//
|
| 2 |
// cNoradBase.h
|
| 3 |
//
|
| 4 |
// This class provides a base class for the NORAD SGP4/SDP4
|
| 5 |
// orbit models.
|
| 6 |
//
|
| 7 |
// Copyright (c) 2003 Michael F. Henry
|
| 8 |
//
|
| 9 |
#pragma once
|
| 10 |
|
| 11 |
//////////////////////////////////////////////////////////////////////////////
|
| 12 |
|
| 13 |
class cEci;
|
| 14 |
class cOrbit;
|
| 15 |
|
| 16 |
//////////////////////////////////////////////////////////////////////////////
|
| 17 |
|
| 18 |
class cNoradBase
|
| 19 |
{
|
| 20 |
public:
|
| 21 |
cNoradBase(const cOrbit&);
|
| 22 |
~cNoradBase(void);
|
| 23 |
|
| 24 |
virtual bool getPosition(double tsince, cEci &eci) = 0;
|
| 25 |
|
| 26 |
protected:
|
| 27 |
cNoradBase& operator=(const cNoradBase&);
|
| 28 |
|
| 29 |
void Initialize();
|
| 30 |
bool FinalPosition(double incl, double omega, double e,
|
| 31 |
double a, double xl, double xnode,
|
| 32 |
double xn, double tsince, cEci &eci);
|
| 33 |
|
| 34 |
const cOrbit &m_Orbit;
|
| 35 |
|
| 36 |
// Orbital parameter variables which need only be calculated one
|
| 37 |
// time for a given orbit (ECI position time-independent).
|
| 38 |
double m_satInc; // inclination
|
| 39 |
double m_satEcc; // eccentricity
|
| 40 |
|
| 41 |
double m_cosio; double m_theta2; double m_x3thm1; double m_eosq;
|
| 42 |
double m_betao2; double m_betao; double m_aodp; double m_xnodp;
|
| 43 |
double m_s4; double m_qoms24; double m_perigee; double m_tsi;
|
| 44 |
double m_eta; double m_etasq; double m_eeta; double m_coef;
|
| 45 |
double m_coef1; double m_c1; double m_c2; double m_c3;
|
| 46 |
double m_c4; double m_sinio; double m_a3ovk2; double m_x1mth2;
|
| 47 |
double m_xmdot; double m_omgdot; double m_xhdot1; double m_xnodot;
|
| 48 |
double m_xnodcf; double m_t2cof; double m_xlcof; double m_aycof;
|
| 49 |
double m_x7thm1;
|
| 50 |
};
|