Click or drag to resize

ASCOM.Astrometry.NOVAS Namespace

NOVAS-C: Naval Observatory Vector Astrometry Subroutines


This component is a .NET presentation of the subroutines and function in the US Naval Observatory NOVAS 2 library. The following is extracted from its accompanying pdf document, which is also included in the ASCOM distribution

The Naval Observatory Vector Astrometry Subroutines, NOVAS, is an integrated package of source-code modules for computing a wide variety of common astrometric quantities and transformations. The package can provide, in one function call, the instantaneous coordinates (apparent, topocentric, or astrometric place) of any star or planet. At a lower level, NOVAS also provides general astrometric utility transformations, such as those for precession, nutation, aberration, parallax, and the gravitational deflection of light. The computations are highly precise.

NOVAS-C uses, as input, astrometric reference data that is expressed in the International Astronomical Union (IAU) J2000.0 system. In particular, NOVAS-C 2.0 supports (but is not limited to) data that conforms to the ICRS. ICRS-compatible data includes the Hipparcos and Tycho Catalogues, the ACT Reference Catalog, the International Celestial Reference Frame (ICRF), the Jet Propulsion Laboratory’s DE405 planetary ephemeris, and Earth orientation measurements from the International Earth Rotation Service (IERS).

The algorithms used by the NOVAS-C functions are based on a vector and matrix formulation that 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 functions 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.06 ´ 1012 AU).

NOVAS-C contains three levels of functions: basic, utility, and supervisory. Basic level functions supply the values of fundamental variables, such as the nutation angles and the heliocentric positions of solar system bodies, for specific epochs. Utility-level functions perform transformations corresponding to precession, nutation, aberration, etc. Supervisory-level functions call the basic and utility functions in the proper order to compute apparent, topocentric, or astrometric places of stars or solar system bodies for specific dates and times. If desired, the user can interact exclusively with the supervisory-level functions and not become concerned with the details of the geometry or physical models involved in the computation.


  • Original FORTRAN code and algorithms - George Kaplan, USNO - Kaplan, G. (1990), Bulletin of the American Astronomical Society, Vol. 22, pp. 930-931.
  • Creation of a C equivalent of the FORTAN Code - John Bangert, USNO - Naval Observatory Vector Astrometry Subroutines C Language Version 2.0
  • Presentation of the C routines as a .NET assembly - Peter Simpson and Tim Long, ASCOM (July, 2009)

.NET Implementation

The NOVAS class has been implemented as a STATIC class because it does not store state of any kind and just provides access to the NOVAS code library (see the NOVAS Class entry for more detailed information).

Method and enum names are identical to those in NOVAS2 except for omission of underscore characters and use of camelcase. There are also a few new structures and enums but these should be self explanatory. One significant parameter difference is that position and velocity vectors are returned as structures rather than double arrays. This was done to make type checking more effective.

Testing of the high level supervisory functions has been carried out using real-time star data from the USNO web site. Values provided by this NOVAS2 implementation agree on average to about 50 milli arc-seconds with current USNO web site values.

This class is 32/64bit agnostic and transparently operates in both environments.

Public classNOVAS31
NOVAS31: Class presenting the contents of the USNO NOVAS 3.1 library. NOVAS was developed by the Astronomical Applications department of the United States Naval Observatory.