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 |
};
|