Under construction ; does not contain reliable informations.
Apart from its index, its coordinates and its coordinate expression, an object of class Body
holds the units used to express its coordinates.
It is also used to store the ComputationException
which may occur during the computation of its coordinates.
So here is how the Body
class look lie :
The methods transforming cartesian to spherical coordinatesare handled by this class, as the result depends on units.
The signature of calcBodyCoords() is :
public void calcBodyCoords(int frame,
int sphereCart,
double precision,
boolean velocities,
int[] units
) throws JEphemException, AstroException
See the javadoc page for more details.
calcBodyCoord's
job is :
for each of its bodies, call the right class to compute the coordinates for the given precision - order velocity computation if required.
Handle coordinate transformations to get to the required frame - transfom spherical / cartesian if necessary.
Order unit conversion before returning the results.
jephem.astro.tools.Ephemeris
is in charge of producing an ephemeris table.
It contains coordinates of several bodies, for several julian days.
This is a higher level class, which can use astronomical classes, but don't perform any astro computations.
The Ephemeris
constructor will build one AstroContext
per julian day, and call their calcBodyCoords
method.
To build an Ephemeris
object, one must provide these informations :
int[] bodyIndexes,
double[] JDs,
int[] whichCoords,
int[] coordUnits,
int frame,
int sphereCart,
double precision
During computation, two kinds of exceptions can be found :
Computation exceptions, thrown by classes implementing PlanetaryTheory
(VSOP87, Pluto99 ...), when a computation is asked for a date not handled by a theory, or for a precision that can't be reached. When this happens a jephem.astro.solarsystem.ComputationException
is stored in the corresponding Body
. Note that planetary theories never throw ComputationException
s.
Other exceptions, like I/O errors. When this occurs, a jephem.astro.AstroException
is thrown
It is now possible complete the diagram presented in the page Class organization.