The VSOP87 Theory
What is the VSOP87 theory?
In the simplest terms, the VSOP87 theory can be described as a long-term mathematical model of the solar system, specifically, the orbits of the major planets from Mercury to Neptune. It is a useful and advanced astronomy tool that allows us to compute with considerable accuracy where the planets are now, have been and are going to be in their orbits at any given moment over spans of thousands of years.
For students of astronomy and programming who want to create their own custom software to compute planetary positions similar to those published in the astronomical almanacs, implementing the VSOP87 theory is one of the simplest ways to go about it.
The VSOP87 theory was originally published in French by Pierre Bretagnon and Gerard Francou as Variations Séculaires des Orbites Planétaires. Solutions de VSOP87 (Secular Variations of the Planetary Orbits. VSOP87 Solutions). The number '87' refers to the year 1987, in which the paper was authored, improving upon an earlier version of the theory called VSOP82.
A copy of the original VSOP87 theory paper, published in the journal Astronomy and Astrophysics, 1988, vol. 202, p309-p315, is available on this site for review. It explains the mathematical and technical foundations of the theory in its full, graphic, mathematical horror.
The principle advantages of the theory are its accuracy with respect to the ease of programming the theory and the compactness of the applied data versus its lengthy validity span.
How Do We Use The VSOP87 Theory?
We apply it by first creating the primary source code for the programmed functions we will need to compute the heliocentric coordinates (like X,Y,Z) and then building an ephemeris program around those functions.
To compute the apparent positions of the planets as viewed from Earth, we first need to know where the planets and the Earth are in their orbits at the same moment. This is the first and most laborious step in computing the apparent geocentric positions of the planets.
The programming code to do the bulk of this labor can be created by the Multi-Language VSOP87 Source Code Generator Tool available here.
The Multi-Language VSOP87 Source Code Generator Tool
The purpose of the Multi-Language VSOP87 Source Code Generator Tool is to write the source code, in any of several programming languages, required to compute the VSOP87 heliocentric coordinates of the planets. Once written, the source code can then be used as the foundation of a long-term planetary ephemeris. Computing the heliocentric coordinates is the most difficult part of the labor.
Some early versions of the theory as published in some popular books used a trimmed down version of the theory. This was necessary, since the programmer had to manually copy large data tables from the book into the program, a process very prone to transcription errors. The full-precision theory has far too many thousands of numerical terms to copy them all manually via keyboard. It seems a shame to have a modern 21st century computer limited to 1980s accuracy. To enable the use of the full-precision theory, these web pages were created to help build VSOP87-related programs.
Since the generated hard-coded functions consist of multiple thousands of computational terms, the code generator tool was designed to do all of the hard work of writing it. Otherwise, a single wrong digit out of millions could be fatal until found and corrected.
The output programming languages currently supported by the tool are:
CPP / C++
All the essential algorithms and tools necessary to implement the full-precision VSOP87 theory are available here.