The OrbitTools Libraries
NORAD SGP4/SDP4 Implementations in C++ and C#
by
Michael F. Henry

The OrbitTools Track Library

The OrbitTools Track Library is a companion library to the Professional Edition of the OrbitTools SGP4/SDP4 libraries.  Available in both C# and C++, it builds on the features of the base OrbitTools library and provides implementations of common satellite tracking software tasks.  By utilizing the Track Library, developers creating 3-D and/or 2-D satellite tracking software will save hundreds of hours of software development and testing time.

Feature Description
Pass Predictions

Determines satellite rise/set times (and azimuth/elevation data) for any Earth location.  Optionally calculates satellite maximum elevation information.  Permits the definition of areas of the sky which are not visible from the viewing site ("sky masks"), and provides percent visibility for each pass.

A proprietary, parallel algorithm takes full advantage of multi-CPU environments to provide fast, accurate pass prediction data.

Satellite Acquisition Times

Site-To-Satellite: This feature builds on the Pass Prediction capability of the library and calculates the time periods when a ground site has a clear view of any satellite in a given constellation of satellites.  It also provides the time periods when the entire set, a minimum set, or a maximum set of satellites is in clear view.

Satellite-To-Site: Calculates the time periods when a satellite has a clear view of any ground site in a given set of sites.  It also provides the time periods when the entire set, a minimum set, or a maximum set of sites is in clear view.

Satellite-to-Satellite: Calculates the time periods when a primary satellite has a clear view of any other satellite in a given constellation of target satellites.  This feature calculates satellite-centric azimuth and elevation data from the primary satellite to the target satellites.  It includes the ability to not only detect when the two satellites are obscured by the (oblate) earth, but by its atmosphere as well. It also provides the time periods when the entire set, a minimum set, or a maximum set of target satellites is in clear view.  Use this feature to build the foundation of Inter-Satellite Link (ISL) communication software.

Coverage Contours

This feature calculates where a transmission beam broadcast from a satellite will intersect the earth's surface.  The transmission beam can be of arbitrary cross-sectional shape and degree of spread.

Orbit Geometry

For a given orbit, calculates the time and location of the ascending/descending nodes, and the time and location of perigee and apogee.

Orbit Rev Number

Calculates the satellite orbit revolution number for any given time.

Ground Track Coordinates

Calculates the set of points on the surface of the earth where a satellite will be directly overhead as it progresses in its orbit.  Information is provided in geodetic or ECF coordinates.

Orbit Track Coordinates

Calculates the set of points that indicate the position of the satellite in ECI coordinate space over a given time period.

Iso-Elevation Coordinates

Satellite-centric: Calculates the (circular) set of points on the surface of the earth which all have an equal viewing angle to the satellite.  When specifying a viewing angle of zero degrees, the algorithm returns the satellite's "footprint", or "circle of visibility" (the region of the earth visible from the spacecraft). 

Site-centric: Calculates the (circular) set of points centered on a ground site which all have an equal viewing angle to a target position located at an arbitrary distance above the ground site.  The "arbitrary distance" is usually the altitude of a specific satellite in orbit.

The returned points do not always represent a perfect circle, since the algorithms account for the earth's oblateness.  Information is provided in geodetic, ECI, or ECF coordinates.

Satellite Nadir

Calculates satellite subpoint information, in geodetic or ECF coordinates.

Solar Features

Calculate the position of the sun in ECI coordinate space.
Calculate subpoint information for the sun, in geodetic, ECF or ECI coordinates.
Calculate solar terminator (the earth's daytime/nighttime boundary) information in geodetic, ECF, or ECI coordinates.
Determine the viewing angle to the sun from any Earth location.
Determine if a satellite or Earth location is illuminated by the sun.

The Track Library is only available to customers who obtain a licensed copy of the Professional Edition of the OrbitTools SGP4/SDP4 libraries.  It is not available for use with the Public or Standard Edition of the libraries.

Requirements for compiling the Track Library

The C# version of the source code requires version 4.0 (or later) of the .NET Framework.

The C++ version of the source code requires a compiler that supports these C++11 features:

  • std::shared_ptr<T>

  • std::mutex

  • std::async()

  • std::future<T>

  • Ranged-based for loops

Notes:
Visual Studio 2012 (and later) supports the above C++11 features.
As of July, 2022, the Track Library was being developed and tested using Visual Studio 2019.
 

 

Track Library Resources

Explore the resources below to learn more about how the Track Library can be used to simplify the job of developing high quality, feature-rich satellite tracking software.

Source Code Example #1 - Satellite Pass Predictions
Pass predictions tell you when a satellite will be above a particular location on the earth, and generating accurate predictions is expected of all modern tracking software.  However, writing your own pass prediction engine can be a big challenge.  By using the Track Library, calculating pass prediction data becomes a trivial task.
View C# example code
View C++ example code

Source Code Example #2 - Satellite Ground Track
Another common task of satellite tracking software is determining a ground track.  A ground track is the set of points on the surface of the earth where a satellite will be directly over head as it progresses in its orbit. 
View C# example code

View C++ example code

Source Code Example #3 - Satellite Acquisition
This example demonstrates how to determine the time periods when satellites in an arbitrary constellation can be acquired from a ground site.  In the example, information about the GPS constellation relative to London, UK is calculated. 
View C# example code
View C++ example code

 

Online Documentation
Track Library documentation in the form of web pages generated from the XML documentation comments in the Track Library C# source code is available.  The web pages describe all the major classes, methods, and types the library provides:
Online Track Library Documentation

Compiled HTML Help File
orbitTools.Track.chm (533 KB, Jul 26, 2020) - Like the Online Documentation, this help file was created from the XML documentation comments in the Track Library C# source code.  It describes all the major classes, methods, and types the library provides.  Download this file and view it using the standard Windows help file viewer. 
Note: For security reasons, you cannot download a .chm file from the web and then view the file locally without first "unblocking" it.  To unblock the downloaded file, right-click on the file in Windows File Explorer and select Properties.  Then click Unblock. Don't see the "Unblock" interface? You may not have Admin rights on your computer.
 

Copyright © 2012-2022 Michael F. Henry.
The author may be reached at mfh@zeptomoby.com