The U.S. Naval Observatory has produced high precision ephemerides for the asteroids:
This CD-ROM provides the ephemerides for these asteroids in tabular ASCII format. In addition there is source code in C to convert the ephemerides to Chebyshev polynomials and interpolate them. Converting the ephemerides from ASCII to Chebyshev polynomials is recommended because the Chebyshev polynomials are much more compact than the tabular data and positions and velocities can quickly be interpolated from them for any arbitrary date.
"Ephemerides Files," describes the ephemeris files. "Generating the Chebyshev Polynomials," describes how to produce Chebyshev polynomial files for quick interpolation. "Reading the Ephemerides," gives a description of how to use the C functions to access the ephemerides. "Testing the Ephemerides," describes how to test the Chebyshev polynomials of the ephemerides. "References," gives references for finding more detailed information on the ephemerides. Appendix A: NOVAS gives information on using the ephemerides with NOVAS-C, the Naval Observatory Vector Astrometry Subroutines in C. Appendix B: Technical Issues discusses those technical issues that place restrictions on the implementation of these ephemerides.
These ephemerides are provided on an "as is" basis. The U.S. Naval Observatory can not provide individual assistance in the implementation or use of these ephemerides.
The asteroid ephemerides are stored in tabular format in individual ASCII character files. The files are named asteroidname.eph (see Appendix B: Technical Issues on shortened name for Interamnia). The tabulation gives the Julian date - 2400000, the Cartesian coordinates for the asteroid in AU, and the velocity vector of the asteroid in AU day-1. The coordinate system is the Cartesian heliocentric equatorial system of the mean equator and equinox of J2000.0. The tabulation interval is 2.0 Julian Days. The ephemeris files are located in the ephem directory on the CD-ROM.
Generating the Chebyshev Polynomials
You can generate your own binary Chebyshev polynomial ephemeris to be read by the ephemeris reading function. The source code file, makeph.c, and all of the subsidiary files, generate.c, allocate.c, and chby.c, needed to generate the Chebyshev polynomials are located in the software directory on the CD-ROM. There is also a makefile, usnoae98.mak, to compile and link the program on Unix systems. The makefile generates an executable called makeph.
When you run the makeph it first prompts you for the asteroid number and name. Assuming that the name you give the program is AsteroidName, The program then looks for the ASCII ephemeris file AsteroidName.eph which it will convert to a binary Chebyshev polynomial file called AsteroidName.chby. You are free to rename the asteroid files as long as you keep the .eph and .chby file extensions.
Next, the program prompts you for a tolerance in the fit of the Chebyshev polynomial. A tolerance of 10-12 is small enough that the precision of the resulting Chebyshev polynomials will be two orders of magnitude greater than the uncertainties in the positions and velocities of the most accurate of the asteroids.
Finally, the program prompts you for a header string delimited by "". The header string can contain any information you want to add to the ephemeris file. The string is inserted into the ephemeris file at the beginning along with the asteroid number, name and the tolerance of the Chebyshev polynomials.
Converting from an ASCII ephemeris file to Chebyshev polynomials is computation intensive, so it may take several minutes.
If you desire, you may produce a Chebyshev polynomial file from your own asteroid ephemeris file. All you have to do is provide an ASCII ephemeris file. The file is named AsteroidName.eph. Each line contains first the Julian date - 240000, the Cartesian coordinates for the asteroid, and the velocity of the asteroid. As long as each item is delimited by at least one space, the program does not require any further formatting in the ephemeris file. Any Cartesian coordinate system or system of units are fine as long as they are consistent with any other ephemerides being used.
The Chebyshev polynomial representation has the advantage that the position and velocity for any date within the valid time period of the ephemeris can be interpolated easily. The disadvantage is that the values produced by the Chebyshev polynomials are not exactly the same as that of the tabulated ephemeris; however, the difference between the tabulated and the Chebyshev representations can be made arbitrarily small. The coefficients of the Chebyshev polynomials were calculated using the algorithm detailed in Newhall (1989) which is also used for distribution of the JPL DE-series planetary ephemerides. However, since asteroid orbits are generally more elliptical than planetary orbits, neither the granule length nor the degree of the polynomial are fixed, but are calculated for each orbital segment. As a result, the Chebyshev polynomial representations are extremely compact, fitting a 300 year asteroid ephemeris into just over 680KB.
The binary ephemerides can be read using the functions found in the file readeph.c. In addition to readeph you need to link in the code from chby.c and allocate.c. All three of these files are found in the software directory.
The software to read the ephemerides consists of a function to read the ephemerides, functions to initialize and clean up the files after use of the ephemerides, and utility functions, used by the ephemeris reading functions.
Before reading any ephemerides files first call the function:
To read the ephemerides you can call the function:
The return from the ephemeris function is a pointer to six double precision numbers. The first three are the equatorial Cartesian coordinates of the asteroid in AU on the mean equator and equinox of J2000.0 and the next three numbers comprise the associated velocity vector in AU day-1.
To make sure that the right asteroid ephemeris is being accessed, the functions compare the name and number of the asteroid ephemeris.
The function readeph assumes that the asteroid ephemeris file has the name AsteroidName.chby and it is located in the present working directory.
When you are finished using the asteroid ephemerides, call the function
There is a program readtest.c to compare the Chebyshev ephemeris files with test result files. The usnoae98.mak makefile will construct readtest, on Unix platforms. On other computers you need to compile the code using a C compiler, and link it with the code compiled from the readeph.c, allocate.c, and chby.c all found in the software directory. The test data for each asteroid is available in the tstfiles directory. The names of the test files are in the format asteroidname.tst (see Appendix B: Technical Issues on shortened name for Interamnia). The test files were written using Chebyshev binary files computed with a tolerance of 10-12. Thus if you use the same tolerance you should get agreement to that level of precision.
The readtest executable will prompt the user for both the asteroid name and number. The program assumes that both the ephemeris and comparison files are in the present working directory.
Dunham, D.W., et al. 1990, The Size and Shape of (2) Pallas from the 1983 Occultation of 1 Vulpeculae, Astron. J., 99, 1636
Hilton, J. L. 1997, New Asteroid Ephemerides for the Astronomical Almanac
Hilton, J.L. 1999, New Asteroid Ephemerides for the Astronomical Almanac, Astron. J., 117, 1077-1086.
Kaplan, G.H. 1990, Bull. Amer. Astron. Soc., 22, 930 - 931
Newhall, X X 1989, Numerical Representation of Planetary Ephemerides, Celestial Mechanics , 45, 305 - 310
Thomas, P. & Zellner, B. 1997, Asteroid Vesta Hubble Space Telescope - Wide Field Planetary Camera 2 PPC97-27 - STScI OPO - September 4, 1997
Weinberger, A.J., Mail Code 156205, University of
California, Los Angeles, Los Angeles, CA 90095-1562
NOVAS
The asteroid ephemerides can be used with NOVAS, Naval Observatory Vector Astrometry Subroutines by Kaplan (1990). The NOVAS functions, available in C and FORTRAN, are used for the computation of a wide variety of astrometric quantities and transformations. NOVAS can determine the instantaneous coordinates (apparent, topocentric, or astrometric) of any star or solar system body, if the needed ephemerides are available.
In particular, NOVAS-C, the C version of NOVAS, is designed to include readeph directly. The novas.h file contains a struct called body that looks like this:
typedef struct {
short unsigned int type;
short unsigned int number;
char name[100];
} body;
The variable type is set to 0 for the major planets, the Sun, and the
Moon, and to 1 for the asteroids. If type = 0, then number = 1
for Mercury, ..., = 9 for Pluto, = 10 for the Sun, = 11 for the Moon. If
type = 1, then number is the asteroid's number. The variable
name is the body's name. Both a number and name are required because
there is some duplication of names of minor bodies in the solar system. For
example both Jupiter V and asteroid 113 are named Amalthea.
Many of NOVAS's functions require the use of ephemerides of the planets as well as the ephemerides of the asteroids. NOVAS is written to make use of the JPL planetary ephemerides such as DE200 and DE405.
If you want barycentric coordinates of the asteroid the function: