VSOP87 Theory Equations Summary Part 1
by Jay Tanner
Rectangular Coordinates (X,Y,Z)

All the VSOP87 series do essentially the same thing.  They compute the coordinates of the planets for a given moment.  The main difference is the type of coordinates in which the planetary positions are expressed.  Depending on the application, one type of co-ordinate system may be more or less suitable or convenient than another for a particular purpose, so several VSOP87 series have been developed for this reason.

For computing the apparent geocentric planetary positions, like those we generally see tabulated in the standard astronomical almanacs for the ecliptic and equinox of the date, series C or D is generally the most convenient starting point for this purpose.  VSOP87 series C is used to compute the heliocentric rectangular XYZ-coordinates or series D is used to compute the corresponding equivalent heliocentric spherical LBR-coordinates (see Part 2).   They are different types of coordinates for expressing the same position in space.

In The Following VSOP87 Equations, We Will Apply The Following Variables

${JDTT}$ = Julian Day number corresponding to a given date and time (TT)
${t}$ = Julian millennia, corresponding to JDTT and reckoned from J2000.0

When we want to compute the position of a planet for a given date and time, we first compute the JDTT value corresponding to the TT and then compute the corresponding (${t}$) value from it.  This will be the actual value used as the time variable in the equations below.

$$t = \frac{JDTT - 2451545}{365250}$$
The ${A,B,C}$ values in each series term in the equations are taken from the original FORTRAN program data tables.  There may be thousands of terms in a sub-series, each with its own table of unique ${A,B,C}$ values.  These values are used by the code generator tool to formulate the hard-coded numerical terms in the output source code.

${A}$ = Amplitude
${B}$ = Phase (not to be confused with the spherical B-co-ordinate)
${C}$ = Frequency

Indices used in the summation equations:
${n}$ = Sub-series order from 0   to   5
${j}$ = Index of term within sub-series (from 1  to  ${k}$)
${k}$ = Total number of terms in sub-series (can be from 1 to multiple thousands)

There are two different types of VSOP87 coordinates - rectangular and spherical coordinates.  These are the coordinates computed by the VSOP87 sub-series function modules generated by the Multi-Language VSOP87 Source Code Generator Tool.

${X}$${Y}$${Z}$ = Heliocentric Rectangular Coordinates in AU

${R}$ = Heliocentric radius vector (distance) in AU

1 AU (Astronomical Unit) = 149597870.691 km = 92955807.267 mi

Speed of Light = 299792.458 km/s = 186282.397 mi/s

Computing the Planetary Rectangular XYZ-Coordinates in AUs

VSOP87 Series A = Heliocentric ecliptical rectangular XYZ-coordinates - Equinox J2000.0
VSOP87 Series C = Heliocentric ecliptical rectangular XYZ-coordinates - Equinox of Date
VSOP87 Series E = Barycentric rectangular XYZ-coordinates - Equinox J2000.0

The VSOP87 A and C series correspond to the B and D series.  The only difference is the type of coordinates used.

In the following summations, the ${A}$,${B}$,${C}$ values we apply depends on the series we are using and were taken from the original FORTRAN data files for the corresponding sub-series.

There are six orders of XYZ sub-series summations (${n}$=0  to  ${n}$=5).  The above sub-series summations are computed separately for each order (${n}$=0  to  ${n}$=5) for each of the ${k}$ terms of the given sub-series.  The essential source code to compute the numerical values of these coordinates for any given moment over spans of thousands of years can be generated by the VSOP87 Source Code Generator tool.

The six separate sub-series summations returned by the functions for the respective sub-series are then summed to obtain the final, complete rectangular XYZ-coordinates of the planet at the given time.
$$X = \sum_{i=0}^5 x_{i} = {x_{0}+x_{1}+x_{2}+x_{3}+x_{4}+x_{5}}$$ $$Y = \sum_{i=0}^5 y_{i} = {y_{0}+y_{1}+y_{2}+y_{3}+y_{4}+y_{5}}$$ $$Z = \sum_{i=0}^5 z_{i} = {z_{0}+z_{1}+z_{2}+z_{3}+z_{4}+z_{5}}$$

For each term of order (${n}$), from 0 to 5, the VSOP87 ($x_{n}    y_{n}    z_{n}$) sub-series summations
may be expressed as:
$$x_{n} = \left(\sum_{j=1}^k ~~A_{X,n,j} \cdot {cos(B_{X,n,j} ~~+   t \cdot C_{X,n,j})}\right) \cdot t^n$$ $$y_{n} = \left(\sum_{j=1}^k ~~A_{Y,n,j} \cdot {cos(B_{Y,n,j} ~~+   t \cdot C_{Y,n,j})}\right) \cdot t^n$$ $$z_{n} = \left(\sum_{j=1}^k ~~A_{Z,n,j} \cdot {cos(B_{Z,n,j} ~~+   t \cdot C_{Z,n,j})}\right) \cdot t^n$$

Based on the above definitions, the complete VSOP87 solutions in terms of rectangular XYZ-coordinates may be expressed by the following set of general equations.

$$t = \frac{JDTT - 2451545}{365250}$$ $$X = \sum_{n=0}^5\left(\left(\sum_{j=1}^k ~~A_{X,n,j} \cdot {cos(B_{X,n,j} ~~+   t \cdot C_{X,n,j})}\right) \cdot t^n\right)$$ $$Y = \sum_{n=0}^5\left(\left(\sum_{j=1}^k ~~A_{Y,n,j} \cdot {cos(B_{Y,n,j} ~~+   t \cdot C_{Y,n,j})}\right) \cdot t^n\right)$$ $$Z = \sum_{n=0}^5\left(\left(\sum_{j=1}^k ~~A_{Z,n,j} \cdot {cos(B_{Z,n,j} ~~+   t \cdot C_{Z,n,j})}\right) \cdot t^n\right)$$ $$R ~=~ \sqrt{X^2 + Y^2 + Z^2}$$

As an example, for the planet Venus, applying VSOP87 series C, the complete set of general equations above could be written to call the PHP code generated by the VSOP87 Source Code Generator tool, each of the functions representing the ordered individual sub-series shown in the double summations above.

These are the raw, instantaneous, geometric, heliocentric coordinates from which the apparent geocentric ecliptical and equatorial coordinates and distance are subsequently derived.  By geometric coordinates we mean that no corrections for the location of the observer have yet been applied, such as for light-time, aberration, etc.  This is the actual location of the planet in space at the given time TT, not its apparent location to the eye.

In practice, the true distance $(R)$ at the given time needs no corrections because we are referring to its true distance, not its apparent distance at the time.  Only the derived longitude and latitude coordinates will later need small corrections to obtain the true geocentric or local apparent positions.

Computing the VSOP87 heliocentric coordinates for both the earth and a planet at the same moment is the first and most laborious step in computing the apparent position of the planet.  The rectangular $XYZ$ coordinates and $R$ are expressed in AUs.

Jay Tanner - 2022
FORTRAN - Language of Dinosaurs