The OrbitTools Libraries
Implementations in C++ and C#
Michael F. Henry
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.
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
parallel algorithm takes full advantage of multi-CPU environments to
provide fast, accurate pass prediction data.
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
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
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.
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.
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.
Calculates the set of points that
indicate the position of the satellite in ECI coordinate space over
a given time period.
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
"circle of visibility" (the region of the earth visible from the
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.
Calculates satellite subpoint information,
in geodetic or ECF coordinates.
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
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:
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
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
View C# example code
View C++ example
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
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
(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