Zeptomoby.OrbitTools.Core 2.0.0

dotnet add package Zeptomoby.OrbitTools.Core --version 2.0.0                
NuGet\Install-Package Zeptomoby.OrbitTools.Core -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.Core" 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.Core --version 2.0.0                
#r "nuget: Zeptomoby.OrbitTools.Core, 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.Core as a Cake Addin
#addin nuget:?package=Zeptomoby.OrbitTools.Core&version=2.0.0

// Install Zeptomoby.OrbitTools.Core as a Cake Tool
#tool nuget:?package=Zeptomoby.OrbitTools.Core&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.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Zeptomoby.OrbitTools.Core:

Package Downloads
Zeptomoby.OrbitTools.Orbit

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

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.0 140 8/28/2024

Revision History for the OrbitTools.Core 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-28

  Class Site now derives from IEciObject.
  Method Site.GetPosition(Julian) is deprecated; use PositionEci(Julian).

Version 1.1.0.0 2012-10-27

  Added classes EciTime, GeoTime, and TopoTime which encapsulate
     coordinate information along with a Julian date. This formalizes the
     connection between coordinates and an associated time, and allows use
     of the base classes Eci, Geo, and Topo when the time component
     is not needed.
  Added new constructor Geo.Geo(Geo geo).
  Added new constructor Site.Site(Geo geo).
  Added RotateX(), RotateY(), RotateZ(), and Translate() methods to
     class Vector.

  Breaking changes:

  1. Renamed class CoordGeo to Geo, and removed default constructor.
  2. Renamed class CoordTopo to Topo, and removed default constructor.
  3. Class Eci no longer contains a Date property (use new class EciTime).
  4. Method Eci.ToGeo() removed; use class Geo constructor.
  5. Method Site.GetPosition() returns type EciTime.
  6. IOrbit.GetPosition() returns type EciTime (2 overloads).
  7. Method Site.GetLookAngle() returns type TopoTime.

Version 1.0.6.0 2012-08-24

  Added ToString() to class Eci.
  Added ToString() and degree-based lat/lon properties to class CoordGeo.
  Added degree-based azimuth/elevation properties to class CoordTopo.

  Breaking changes:

     1. Renamed CoordTopo.Azimuth to AzimuthRad.
     2. Renamed CoordTopo.Elevation to ElevationRad.

Version 1.0.5.0 2012-06-21

  Fixed the string-based property Tle.Epoch which was dropping leading
  zeros from single-digit year and day values. Thanks to T. Doyle for
  reporting this issue.

  Updated the string-based Tle.GetField() to remove all leading/trailing
  whitespace from returned strings.

  Added methods Site.LatitudeDeg() and Site.LongitudeDeg().

  Breaking changes:

     1. Removed "IsAeUnits" from the constructor for class Eci.
     2. Removed method Eci.AeToKm().
     3. Removed enumeration VectorUnits.
     4. Renamed Globals.Deg2Rad() to ToRadians().
     5. Renamed Globals.Rad2Deg() to ToDegrees().
     6. Renamed Tle.IsValidLine() to IsValidFormat().
     7. Renamed CoordGeo.Latitude() to LatitudeRad().
     8. Renamed CoordGeo.Longitude() to LongitudeRad().
     9. Renamed Site.Latitude() to LatitudeRad().
    10. Renamed Site.Longitude() to LongitudeRad().

Version 1.0.4.0 2012-05-28

  Some AMSAT TLEs use a non-standard scientific notation format that
  excludes the sign of the exponent when the exponent is positive.
  Updated Tle.ExpToDecimal() to correctly parse these TLEs. Thanks to
  T. Doyle for reporting this issue.

Version 1.0.3.1 2012-04-26

  Use generic Dictionary<> instead of HashTable.
  Remove references to class CategoryAttribute.

Version 1.0.3.0 2011-08-21

  Allow TLE satellite names up to twenty-four characters.
  Compile with Visual Studio 2010.

Version 1.0.2.2 2011-06-26

  Repaired Site.ToString(), which had formatting errors.
  
Version 1.0.2.1 2011-05-17

  Field Site.m_Geo is now private property "Geo".
  Added copy constructor for class Vector.
  
  Breaking changes:
  
     1. Removed Globals.E6a
     2. Removed Globals.TwoThird

Version 1.0.2.0 2010-12-31

  Assembly marked as CLSCompliant(true), and ComVisible(false).
  Fixed white-space removal code in Tle.IsValidLine().
  Pass CultureInfo objects to all calls to Parse() and ToString().
  Removed unneeded variable initializations.
  
  Breaking changes from prior version:

     1. Renamed Tle.getUnits() to GetUnits() and made the method static.
     2. Tle.ConvertUnits() is now a static method.
     3. Tle.Key() is now a static method.
  
  New behaviors:
  
     1. Site.GetLookAngle() throws class ArgumentException (and not class
        Exception) when the eci argument does not have kilometer-based
        units.
  
Version 1.0.1.0 2010-12-22

  Provide GMT when throwing DecayExceptions.

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.
  
  Method Tle.ExpToDecimal() now uses the invariant culture when parsing
  the exponent value. This fixes a problem encountered by users who do
  not use Windows English regional settings.
  
  Added new exception classes PropagatorException and DecayException.   

  Compile with Visual Studio 2008.
  
  Breaking changes from prior (single assembly) release:
  
  All method names now use Pascal casing:
     1. Renamed Tle.getField() (3 overloads) to GetField().
     2. Renamed Site.getPosition() to Site.GetPosition().
     3. Renamed Site.getLookAngle() to Site.GetLookAngle(). This method now
        throws System.ArgumentException on error (and not System.Exception).
     4. Renamed Site.toString() to Site.ToString().
     5. Renamed Julian.toGMST() to Julian.ToGmst().
     6. Renamed Julian.toLMST() to Julian.ToLmst().
     7. Renamed Julian.toTime() to Julian.ToTime().
     8. Renamed Eci.toGeo() to Eci.ToGeo().
     9. Renamed EciBase.ae2km() to EciBase.Ae2Km().
    10. All fields in class Globals renamed using Pascal casing.

                      ********************
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
Core.dll assembly have been retained. All other comments were moved into
the revision notes file for the Orbit.dll assembly.
                      ********************
  
Version 1.9.1.0 10/18/2009
  
  Corrected problem in ExpToDecimal() that was dropping the last
  significant digit of the mantissa.

Version 1.9.0.0 01/25/2009

  Corrected argument range checking in Julian.Initialize(). Also, the
  type of exception thrown if an argument is invalid has changed from
  "Exception" to "ArgumentOutOfRangeException".

Version 1.8.0.0 01/02/2009

  (Incremented due to changes in Orbit.cs)

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

  Added ECF support.
  Use invariant culture when parsing strings.

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
  
  Added EpochJulian property to Tle class. Logic was previously located in
  class Orbit's constructor.  The Tle class has been updated to better work
  with the .NET property grid control.

Version 1.2.0.0 06/01/2005

  Rework interfaces using C# accessors. Minor code updates.

  Confusion in the Julian day constant values introduced a bug SDP4; the
  constants were repaired.  Specifically, 2415020.0 is 12:00, on Dec 31, 1899,
  or the beginning of Julian "Jan Zero" in the year 1900.

  Simplify Tle.ExpToDecimal() by converting input string into Double-Parsable
  form, i.e., " 12345-3" => " 12345e-3", and then simply call Double.Parse().

Version 1.1.0.0 12/01/2004

  Baseline release.