1 |
kusanagi |
1.1 |
Documentation for C++ NORAD SGP4/SDP4 Implementation
|
2 |
|
|
Developed by Michael F. Henry
|
3 |
|
|
December, 2003
|
4 |
|
|
|
5 |
|
|
Copyright © 2003-2005. All rights reserved.
|
6 |
|
|
|
7 |
|
|
The files in this package implement the SGP4 and SDP4 algorithms described in the
|
8 |
|
|
December, 1980 NORAD document "Space Track Report No. 3". The report provides
|
9 |
|
|
FORTRAN IV implementations of each. These two orbital models, one for "near-earth"
|
10 |
|
|
objects and one for "deep space" objects, are widely used in satellite tracking software
|
11 |
|
|
and can produce very accurate results when used with current NORAD two-line element
|
12 |
|
|
datum.
|
13 |
|
|
|
14 |
|
|
The original NORAD FORTRAN IV SGP4/SDP4 implementations were converted to
|
15 |
|
|
Pascal by Dr. TS Kelso in 1995. In 1996 these routines were ported in a straight-forward
|
16 |
|
|
manner to C++ by Varol Okan. The SGP4/SDP4 classes here were written by Michael F.
|
17 |
|
|
Henry in 2002-03 and are a modern C++ re-write of the work done by Okan. In addition
|
18 |
|
|
to introducing an object-oriented architecture, the last residues of the original FORTRAN
|
19 |
|
|
code (such as labels and gotos) were eradicated.
|
20 |
|
|
|
21 |
|
|
The project files were compiled using Microsoft Visual Studio 7.0. Any compiler that
|
22 |
|
|
supports the C++ Standard Template Library should work, including Visual Studio 6.0.
|
23 |
|
|
The project generates a single executable, SxP4Test.exe, which calculates ECI position
|
24 |
|
|
and velocity information for the test element sets originally published in the NORAD
|
25 |
|
|
report. Also provided as an additional example is how to use the classes to calculate the
|
26 |
|
|
look angle from a location on the earth to a satellite in orbit.
|
27 |
|
|
|
28 |
|
|
Here is the correct program output:
|
29 |
|
|
|
30 |
|
|
|
31 |
|
|
SGP4 Test
|
32 |
|
|
1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 8
|
33 |
|
|
2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 105
|
34 |
|
|
|
35 |
|
|
TSINCE X Y Z
|
36 |
|
|
|
37 |
|
|
0.00 2328.97070437 -5995.22083333 1719.97065611
|
38 |
|
|
360.00 2456.10787343 -6071.93868176 1222.89554078
|
39 |
|
|
720.00 2567.56296224 -6112.50380175 713.96182588
|
40 |
|
|
1080.00 2663.09017513 -6115.48274470 196.39907463
|
41 |
|
|
1440.00 2742.55440194 -6079.66984186 -326.39149750
|
42 |
|
|
|
43 |
|
|
XDOT YDOT ZDOT
|
44 |
|
|
|
45 |
|
|
2.91207225 -0.98341531 -7.09081697
|
46 |
|
|
2.67938906 -0.44828838 -7.22879265
|
47 |
|
|
2.44024485 0.09811117 -7.31995951
|
48 |
|
|
2.19612076 0.65241695 -7.36282421
|
49 |
|
|
1.94849696 1.21107421 -7.35619305
|
50 |
|
|
|
51 |
|
|
SDP4 Test
|
52 |
|
|
1 11801U 80230.29629788 .01431103 00000-0 14311-1 8
|
53 |
|
|
2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 6
|
54 |
|
|
|
55 |
|
|
TSINCE X Y Z
|
56 |
|
|
|
57 |
|
|
0.00 7473.37213351 428.95462549 5828.74786677
|
58 |
|
|
360.00 -3305.22417985 32410.86360001 -24697.17732308
|
59 |
|
|
720.00 14271.28695394 24110.46300337 -4725.76750899
|
60 |
|
|
1080.00 -9990.05752318 22717.36123643 -23616.89356981
|
61 |
|
|
1440.00 9787.87233694 33753.34427732 -15030.80628319
|
62 |
|
|
|
63 |
|
|
XDOT YDOT ZDOT
|
64 |
|
|
|
65 |
|
|
5.10715289 6.44468289 -0.18613182
|
66 |
|
|
-1.30113547 -1.15131513 -0.28333528
|
67 |
|
|
-0.32050442 2.67984097 -2.08405301
|
68 |
|
|
-1.01667268 -2.29026701 0.72892308
|
69 |
|
|
-1.09425038 0.92358954 -1.52230979
|
70 |
|
|
|
71 |
|
|
Example output:
|
72 |
|
|
AZ: 100.2 EL: 12.9
|
73 |
|
|
|
74 |
|
|
|
75 |
|
|
A brief description of important classes:
|
76 |
|
|
|
77 |
|
|
cTle – This class encapsulates a single set of NORAD two line elements.
|
78 |
|
|
|
79 |
|
|
cEci – This class encapsulates Earth-Centered Inertial coordinates and velocity for a
|
80 |
|
|
given moment in time.
|
81 |
|
|
|
82 |
|
|
cOrbit – Given a cTle object, this class provides information about the orbit of the
|
83 |
|
|
described satellite, including inclination, perigee, eccentricity, etc. Most importantly, it
|
84 |
|
|
provides ECI coordinates/velocity for the satellite.
|
85 |
|
|
|
86 |
|
|
CSite – Describes a location on the earth. Given the ECI coordinates of a satellite, this
|
87 |
|
|
class can generate Azimuth/Elevation look angles to the satellite.
|
88 |
|
|
|
89 |
|
|
cNoradBase, cNoradSGP4, cNoradSDP4 – These classes implement the NORAD
|
90 |
|
|
SGP4/SDP4 algorithms. They are used by cOrbit to calculate the ECI
|
91 |
|
|
coordinates/velocity of its associated satellite.
|
92 |
|
|
|
93 |
|
|
For excellent information on the underlying physics of orbits, visible satellite
|
94 |
|
|
observations, current NORAD TLE data, and other related material, see
|
95 |
|
|
http://www.celestrak.com which is maintained by Dr. TS Kelso.
|
96 |
|
|
|
97 |
|
|
Michael F. Henry
|
98 |
|
|
December, 2003
|