1 |
kusanagi |
1.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 |
|
|
};
|