ASCOM.Astrometry.Components Namespace

Utilities Update

The Platform 5.0 NOVASCOM and Kepler components have been combined into one namespace (ASCOM.Utilities.NOVASCOM) for this release. This removes duplication of enums and structures between the two components and improves interoperability. For backward compatibility, the 32bit COM Kepler and NOVASCOM components are also included in the platform and are accessible through their original namespaces of ASCOM.Kepler and ASCOM.NOVASCOM respectively. This is to ensure that existing applications continue to work, unchanged, with the new platform.

The re-factored NOVASCOM classes (not the original COM component classes) such as Planet and Earth now have internal Kepler components by default so it is no longer necessary to create these separately and attach them as ephemeris objects. If you do attach ephemeris objects, they will be used in place of the internal objects just as in the original COM components.

No other functions in the NOVASCOM and Kepler components has not been altered and testing shows a numeric result correspondence with the original COM components of than 1 part in 1E-9.

NOVAS-COM Release Notes - V2.1 (July 2007)

NOVAS-COM V2.1 is the third production release of a Component Object Model (COM) implementation of the U. S. Naval Observatory Vector Astrometry Subroutines (NOVAS) package. By encapsulating NOVAS within a COM component, the functions of NOVAS become available to most Windows scripting and programming environments. This component may be used by Visual Basic programs, scripts in any ActiveX Scripting language such as VBScript, JScript, Perl, Python, even an Excel spreadsheet. Thus, the proven accuracy of these USNO algorithms is accessible to end-user observatory automation and data reduction script writers.


  • NOVAS was developed by the Astronomical Applications department of the United States Naval Observatory. The primary responsibility for tht C language version of NOVAS, on which NOVAS-COM is based, was developed by John Bangert at USNO/AA.
  • NOVAS-COM was developed by Robert B. Denny for contribution to the ASCOM Initiative and for the general benefit of the amateur and educational astronomy community. Additional improvements were added by Rick Sprenkle, the azuthor of NGCView. The executable NOVAS-COM component is offered free of any commercial charge or license.
  • NOVAS-COM was re-factored into .NET form by Peter Simpson
  • This document contains content taken from the NOVAS-C documentation written by J. A. Bangert and G. H. Kaplan of USNO, edited to make it apply to this COM implementation, and from the USNO NOVAS web site.
  • If you use the NOVAS-COM component, please send an e-mail to George Kaplan of USNO that outlines your application. This helps justify further improvements to NOVAS. Comments and suggestions are also welcome. Thank you!.


NOVAS-COM was developed according to the ASCOM Initiative's quality and behavior guidelines. Every effort has been taken to provide a quality stable component. Errors are signaled via automation exceptions with clear error messages. The component has a dual interface, and thus can be used in demanding high performance applications without the speed penalty of the dispatch interface. For more information on the ASCOM Initiative and the logo requirements, see the ASCOM Initiative Web Site.

NOVAS-COM provides for the computation of a wide variety of common astrometric quantities and transformations. The component can provide, in one or two method calls, the instantaneous coordinates (apparent, topocentric, or astrometric place) of any star. With the addition of acompatible ephemeris component such as the Kepler Orbit Engine, NOVAS-COM can also compute the instantaneous coordinates of major and minor planets. Ignoring ephememeris approximations, the computations provided are precise to better than one milliarcsecond. The NOVAS-COM component is an easy-to-use facility that can be incorporated into data reduction programs, telescope control systems, and simulations. The internal NOVAS subroutines are, in fact, identical to those now used in the production of the Astronomical Almanac. The internally used subroutines are available in ANSI standard Fortran and C versions.

The algorithms used by the NOVAS-COM routines are based on a vector and matrix formulation which is rigorous, consistent with recent IAU resolutions, and does not use spherical trigonometry or form "day numbers" at any point. Objects within and outside the solar system are treated similarly and the position vectors formed and operated on by these routines place each relevant object at its actual distance (in AU) from the solar system barycenter. Objects at unknown distance (parallax zero or undetermined) are placed on the "celestial sphere" herein defined to be at a radius of 10 megaparsecs (2.06E12 AU). A description of the algorithms used, along with definitions of terms and related information, can be found in Kaplan, et al. (1989) Astron. J. 97, 1197.

NOVAS-COM uses as input astrometric reference data that is expressed in the IAU J2000.0 system. In particular, NOVAS supports (but is not limited to) data that conforms to the International Celestial Reference System (ICRS). ICRS-compatible data includes the Hipparcos and Tycho Catalogues, the ACT Reference Catalog (obsolete, use Tycho-2), the International Celestial Reference Frame (ICRF), the Jet Propulsion Laboratory DE405 planetary ephemeris, and Earth orientation measurements from the International Earth Rotation Service (IERS). The list of ICRS-compatible data of various types is continually expanding. NOVAS-COM can also be used with data conforming to the FK5 system.

NOVAS-COM's internal support for solar system body calculations is limited to an the four largest planets, and is used is used for barycenter computations only. In order to use NOVAS-COM's Planet object for major and minor planets, you must furnish an ephemeris source which implements a simple COM interface. When attached to an instance of the NOVAS-COM Planet object, the ephemeris component is responsible for supplying heliocentric J2000-equatorial rectangular coordinates of the planet at the given terrestrial time. One such compatible ephemeris component is the Kepler Orbit Engine, developed by the NOVAS-COM author. See the ASCOM Initiative web site in the downloads section.

Delta-T calculations

NOVAS-COM allows the client to directly specify the value of delta-t to used in various situations, as a property of some of its objects. NOVAS-COM also contains an internal utility subroutine that approximates the value of delta-T (TT-UT1) based on a 4th order Bessel interpolation of observed values taken from the Astronomical Almanac and USNO Delta T historical tables. Tables within the delta-t subroutine contain data from 1620.0 through 2007.0. Predictions for 2007.0 through 2050.0 are made using a NASA derived polynomial. Entries prior to 1955 are corrected for secular tidal acceleration as used in JPL's DE403 ephemeris. If the client does not directly set the delta-t property, this internal utility is used.

Kepler Ephemeris Engine Programmer's Reference


This document describes the first production release of the Kepler Ephemeris Engine, an ASCOM component which provides ephemerides for solar system bodies, given their orbital elements. It was written as a companion to the NOVAS-COM vector astrometry engine, providing the ephemerides needed for planetary astrometric calculations, and for high-precision aberration calculations. It provides heliocentric J2000 equatorial cartesian vectors for position and velocity given a set of orbital elements and a terrestrial time. NOVAS-COM can be used to transform these coordinates to Earth-centered ("astrometric") or local topocentric coordinates for observational use. You can download NOVAS-COM from the ASCOM Downloads Page.


  • Written by Robert B. Denny, DC-3 Dreams, SP (March, 2001)
  • The ephemeris calculations in Kepler draw heavily from the work of Stephen Moshier kepler is released as a free software package, further extending the work of Mr. Moshier.
  • NOVASCOM was re-factored into .NET by Peter Simpson (July, 2009). Its calculation algorithm has not been changed and comparison testing shows an RMS error of 1 part in 10E10 with respect to values returned by Bob's original COM component.

Ephemeris Calculations

Kepler does not integrate orbits to the current epoch. If you want the accuracy resulting from an integrated orbit, you must integrate separately and supply Kepler with elements of the current epoch. Orbit integration is on the list of things for the next major version.

Kepler uses polynomial approximations for the major planet ephemerides. The tables of coefficients were derived by a least squares fit of periodic terms to JPL's DE404 ephemerides. The periodic frequencies used were determined by spectral analysis and comparison with VSOP87 and other analytical planetary theories. The least squares fit to DE404 covers the interval from -3000 to +3000 for the outer planets, and -1350 to +3000 for the inner planets. For details on the accuracy of the major planet ephemerides, see the Accuracy Tables page.

Date and Time Systems

For a detailed explanation of astronomical timekeeping systems, see A Time Tutorial on the NASA Goddard Spaceflight Center site, and the USNO Systems of Time site.

Julian dates
These are standard Julian "date serial" numbers, and are expressed in UTC time or Terrestrial time. The fractional part of these numbers represents time within a day. The standard ActiveX "Double" precision of 15 digits gives a resolution of about one millisecond in a full Julian dates. This is sufficient for the purposes of this program.

Hourly Time Values
These are typically used to represent sidereal time and right ascension. They are simple real numbers in units of hours.

UTC Time Scale
Most of the Util methods that accept date/time values (either Date or Julian) assume that the date/time is in Coordinated Universal Time (UTC). Where necessary, this time is converted internally to other scales. Note that UTC seconds are based on the Cesium atom, not planetary motions. In order to keep UTC in sync with planetary motion, leap seconds are inserted periodically. This program does not account for leap seconds. The error is at most 900 milliseconds.

UT1 Time Scale
The UT1 time scale is the planetary equivalent of UTC. It it runs smoothly and varies a bit with time, but it is never more than 900 milliseconds different from UTC. This program treats UTC and UT1 the same.

TT Time Scale
The Terrestrial Dynamical Time (TT) scale is used in solar system orbital calculations. It is based completely on planetary motions; you can think of the solar system as a giant TT clock. It differs from UT1 by an amount called "delta-t", which slowly increases with time, and is about 60 seconds right now (1998). You can convert Julian dates between UTC and TT using the methods Julian_TJD() and TJD_Julian().

Development Process

Development and refinement of this component will be evolutionary rather then revolutionary. The ephemeris engine interface specification will not be blessed as an "ASCOM Standard" until

  1. implemetations have been tested in the real world and/or used in production software, and
  2. a consensus of approval has been reached by the ASCOM members.

Discussions between ASCOM members regarding this component, the ephemeris generator interface specification and other issues are conducted on the ASCOM-Talk mailing list. Instructions for joining the list are at the ASCOM web site, or just click here to subscribe.


Public classEarth
NOVAS-COM: Represents the "state" of the Earth at a given Terrestrial Julian date
Public classPlanet
NOVAS-COM: Provide characteristics of a solar system body
Public classPositionVector
NOVAS-COM: PositionVector Class
Public classSite
NOVAS-COM: Site Class
Public classStar
NOVAS-COM: Star Class
Public classVelocityVector
NOVAS-COM: VelocityVector Class


Public interfaceIEarth
Interface to an Earth object that represents the "state" of the Earth at a given Terrestrial Julian date
Public interfaceIPlanet
Interface to a Planet component that provides characteristics of a solar system body
Public interfaceIPositionVector
Interface to the NOVAS-COM PositionVector Class
Public interfaceIPositionVectorExtra
Interface for PositionVector methods that are only accessible through .NET and not through COM
Public interfaceISite
Interface to the NOVAS-COM Site Class
Public interfaceIStar
Interface to the NOVAS-COM Star Class
Public interfaceIVelocityVector
interface to the NOVAS_COM VelocityVector Class
Public interfaceIVelocityVectorExtra
Interface for VelocityVector methods that are only accessible through .NET and not through COM