Zeptomoby.OrbitTools.Orbit 2.0.0

dotnet add package Zeptomoby.OrbitTools.Orbit --version 2.0.0                
NuGet\Install-Package Zeptomoby.OrbitTools.Orbit -Version 2.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Zeptomoby.OrbitTools.Orbit" Version="2.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Zeptomoby.OrbitTools.Orbit --version 2.0.0                
#r "nuget: Zeptomoby.OrbitTools.Orbit, 2.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Zeptomoby.OrbitTools.Orbit as a Cake Addin
#addin nuget:?package=Zeptomoby.OrbitTools.Orbit&version=2.0.0

// Install Zeptomoby.OrbitTools.Orbit as a Cake Tool
#tool nuget:?package=Zeptomoby.OrbitTools.Orbit&version=2.0.0                

C# NORAD SGP4/SDP4 Implementation Developed by Michael F. Henry

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

The files in this directory are compiled to make the two OrbitTools assemblies: Zeptomoby.OrbitTools.Core.dll Zeptomoby.OrbitTools.Orbit.dll

The "Core" assembly contains several utility classes:

Tle – This class encapsulates a single set of NORAD two-line elements. Site – Describes a location on the earth. Given the ECI coordinates of a satellite, this class can generate Azimuth/Elevation look angles to the satellite. Eci – This class encapsulates Earth-Centered Inertial coordinates and velocity for a given moment in time. Julian - Encapsulates a julian date/time system.

The "Orbit" assembly contains the main SGP4/SDP4 implementation:

Satellite - Given a Tle object, this class provides information about the orbit of the described satellite, including inclination, perigee, eccentricity, etc. Most importantly, it provides ECI coordinates and velocity for the satellite. NoradBase, NoradSGP4, NoradSDP4 – These classes implement the NORAD SGP4/SDP4 algorithms. They are used by class Orbit to calculate the ECI coordinates and velocity of its associated satellite.

All classes are contained within the Zeptomoby.OrbitTools namespace.

Michael F. Henry June, 2014


This fork contains the same unmodified source files, but repackaged as a .NET 8 modern package. The code can be included in your project using NuGet packages.

Stephan August, 2024

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.0 136 8/28/2024

Revision History for the OrbitTools.Orbit assembly - Public Edition
Copyright (c) Michael F. Henry
www.zeptomoby.com/satellites

Version 2.0.0.0 2024-08-28

   Support for .NET8.0 and packaged as NuGet.

Version 1.2.0.0 2014-06-19

  Added class Satellite.
  Method Orbit.GetPosition() (two overrides) is deprecated; use
     method Orbit.PositionEci() (two overrides).

Version 1.1.1.0 2013-09-07

  Added properties Orbit.TleLine1 and Orbit.TleLine2.

Version 1.1.0.0 2012-10-27

  Updates for OrbitTools.Core changes:

     Class CoordGeo renamed Geo, added derived class GeoTime.
     Class CoordTopo renamed Topo.
     Use new classes EciTime, GeoTime, TopoTime.

  Breaking changes:
  
  1. Orbit.GetPosition() now returns type EciTime.

Version 1.0.5.0 2012-06-02

  Updates for OrbitTools.Core changes:

     Boolean "IsAeUnits" was removed from the constructor for class Eci.
     Eci.AeToKm() was removed.
     The enumeration VectorUnits was removed.
     Global functions to convert between degrees and radians were renamed.

Version 1.0.4.0 2011-12-19

  Fix Orbit.TPlusEpoch(); it was not using UTC time.

Version 1.0.3.0 2011-10-01

  Performance changes:

     1. Class Orbit now uses caching variables for common TLE orbital
        parameters like inclination, argument of perigee, etc.

  Breaking changes:

     1. Method Orbit.MeanAnomaly() is now property Orbit.MeanAnomaly.
     2. Method Orbit.MeanAnomaly(DateTime) has been removed.

Version 1.0.2.0 2011-08-21

  Compile with Visual Studio 2010.

Version 1.0.1.1 2011-05-17

  Renamed Orbit.RadGet() to Orbit.GetRad().
  Renamed Orbit.DegGet() to Orbit.GetDeg().
  
  Breaking changes:
  
     1. Changed Orbit.SatName() (2 overloads) into two properties:
        SatName and SatNameLong (a change that was erroneously dropped
        from version 1.0.0.0)
     2. Renamed property Orbit.mnMotion to Orbit.TleMeanMotion.
  
Version 1.0.1.0 2010-12-31

  Assembly marked as CLSCompliant(true), and ComVisible(false).
  Removed unused local from class NoradSDP4 c'tor.
  
Version 1.0.0.0 2010-09-26

  Split the OrbitTools project into two assemblies:
  
     Core.dll  - Contains core functionality such as Tle, Julian, etc.
     Orbit.dll - Contains SGP4/SDP4 and class Orbit functionality.

  Dividing the project into two assemblies allows an easier upgrade path
  for users who wish to transition to the Professional version of the
  software.

  Orbit.GetPosition() no longer throws class Exception, but instead
  throws class DecayException or class PropagationException.
  
  Compile with Visual Studio 2008.
              
  Breaking changes from prior (single assembly) release:
  
     1. Assembly name is Zeptomoby.OrbitTools.Orbit.dll, and requires
        assembly Zeptomoby.OrbitTools.Core.dll.
     2. Changed Orbit.SatName() (2 overloads) into two properties:
        SatName and SatNameLong.
     3. Renamed Orbit.mnAnomaly() (2 overloads) to MeanAnomaly().
     4. Renamed Orbit.getPosition() (2 overloads) to GetPosition().

                      ********************
Revision history below this point was for the single-assembly version of
the library. Only comments relevant to the files that were moved into the
Orbit.dll assembly have been retained. All other comments were moved into
the revision notes file for the Core.dll assembly.
                      ********************

Version 1.9.1.0 10/18/2009
  
  (Version incremented due to changes in Tle.cs)

Version 1.9.0.0 01/25/2009

  (Version incremented due to changes in Julian.cs)

Version 1.8.0.0 01/02/2009

  The orbit axis recovered from orbital elements is now correctly
  associated with the semimajor axis (and not the semiminor axis).
  This change does not effect SGP4/SDP4 output calculations, but
  does correct class Orbit's convenience properties SemiMajor, SemiMinor,
  Major, Minor, etc. Thanks to C. Wee for discovering this issue.

  Renamed class Orbit's public property "mnMotionRec" to "MeanMotion".

Version 1.7.0.0 12/08/2007
  
  Added overrides of several functions to accept System.DateTime arguments.
  Converted Orbit.Period() to a property and changed return type to TimeSpan.

Version 1.6.0.0 08/08/2007

  (Version incremented due to changes in Tle.cs)

Version 1.5.0.0 01/28/2006

  Namespace is now "Zeptomoby.OrbitTools".

Version 1.4.0.0 11/05/2005

  More interface rework; many methods are now properties.

Version 1.3.0.0 07/19/2005

  Fixed error in calculating Orbit.m_kmPerigeeRec (which is not used by
  the SDP4 or SGP4 algorithms). Accessor is now a property. Added Orbit.Apogee
  counterpart property.
  
Version 1.2.0.0 06/01/2005

  Rework interfaces using C# accessors. Minor code updates.

Version 1.1.0.0 12/01/2004

  Baseline release.