NORAD SGP4/SDP4 Implementations
by
Michael F. Henry

Below are two implementations of NORAD algorithms for determining satellite location and velocity in Earth orbit.  The algorithms come from the December, 1980 NORAD document "Space Track Report No. 3".  The report details six orbital models and provides FORTRAN IV implementations of each.  Two of the orbital models are implemented here: SGP4, for "near-earth" objects, and SDP4 for "deep space" objects.  These two models are widely used in satellite tracking software and can produce very accurate results when used with current NORAD two-line element datum.

The original 1980's era NORAD FORTRAN IV SGP4/SDP4 implementations were ported to Pascal by Dr. T. S. Kelso in 1995 and eventually became the basis for an object-oriented C++ version I created in late 2002.  In late 2003,  I ported this C++ version of the SGP4/SDP4 code to C#.   Both versions can be downloaded below.

Permission is granted to use the software for non-commercial applications only; commercial users please contact the author for license fee information at the email address below.

For excellent information on the underlying physics of orbits, visible satellite observations, current NORAD TLE data, and other related material, see www.celestrak.com which is maintained by Dr. TS Kelso. 

Michael F. Henry
mfh@zeptomoby.com
December, 2004
Updated January 2006


Downloads 

C++
SxP4Test.zip - This download contains a modern, object-oriented implementation of the NORAD SGP4/SDP4 algorithms.  The ZIP file contains source code for the SGP4/SDP4 algorithms, miscellaneous supporting classes, and an example program that demonstrates how to calculate the ECI position of a satellite and its look angle from a location on earth.
(Last updated October 2005)

C#
OrbitTools.zip - This download contains an implementation of the NORAD SGP4/SDP4 algorithms packaged as a .NET assembly.  The assembly is written entirely in C# and defines the "Zeptomoby.OrbitTools" namespace which includes the SGP4/SDP4 implementations and miscellaneous supporting classes.  Also included in the ZIP file is a companion C# program that demonstrates how to use the assembly to calculate the ECI position of a satellite and its look angle from a location on earth.  All source code, for both the assembly and the companion program, is included.
(Last updated August 2007)

 


Copyright  © 2003-2007 Michael F. Henry.
Permission to use for non-commercial use only. All other uses contact author at mfh@zeptomoby.com