1. INTRODUCTION
Perhaps the most difficult section of the program will be the
module that processes input observations and reduces them to
a form suitable for passage to the O-C section of the parameter
adjustment module (see Figure 5). Essentially, the observa-
tions will be sent to the O-C section in the form of apparent
positions, corrected for various biases, including (but not lim-
ited to):
¯ catalog corrections
¯ delay/doppler bias corrections
¯ coordinate frame fiducialization
¯ aberration corrections
¯ nutation and precession
Integral to this section are the specific types of observa-
tional datasets and the specific types of observational plat-
forms. The data and platform types vary widely.
2. OBSERVING PLATFORMS
One must consider the various observing platforms presently
available in the solar system. They are
I.
Planet
A. Earth
1. Earth-based observatories
2. Earth orbiters
B. Planetary landers
C. Planetary orbiters
II. Deep space probes (i.e., gravitationally unbound from all
planets and satellites)
Figure 4 shows the object hierarchy of observing platforms.
4
The C++ code classes reflect this hierarchy. Each input datas-
tream will contain relevant observing platform information. An
appropriate observing platform object will encapsulate this in-
formation. Each type of platform object also encapsulates the
necessary functionality (referred to as methods) to provide in-
formation needed to manipulate or transform data of the corre-
sponding type (see Figure 6).
For example, planetary observing platform objects know
how to precess and nutate coordinates to a specified epoch.
Each base class contains parameters and functionality common
to all subclasses derived from it. The derived classes contain
only the additional or specialized parameters and functionality
required to handle platforms of a specific kind. For example,
since all planetary platforms have a basic precession and nuta-
tion capability, these methods reside in the base class
Planet-
Platform
. An
EarthPlatform
object automatically inherits all
the functionality and data of
PlanetPlatform
. The
EarthPlat-
form
object therefore contains only additional abilities, data,
or refinements, for example precession parameters specific to
the Earth. Proper use of inheritance eliminates code duplica-
tion for common tasks in a natural and intuitive way. The in-
heritance mechanism is built into the C++ language and there-
fore requires no enforcement by or special discipline from the
programmer.
Figure 4 intentionally shows only the major class types, in
accord with the introductory nature appropriate to this
Chapter. It is a simple matter to derive further specialized
classes from the base classes shown. For example, one would
derive a
VikingOrbiter
from
OrbiterPlatform
.
3. OBSERVATION TYPES
The various observation data types fall naturally into the two
broad categories, timing (in a sense, the radial coordinate from
the observer) and positions (on the sky, i.e. transverse to the
radial direction). The complete breakdown is as follows:
I.
Transverse (position)
A. Optical observations
1. Global positions
a. Transit circle
2. Differential positions
3.
Occultations
a.
Satellite-planet
b.
Star-planet
c.
Spacecraft-planet
4.
Transits
a.
Solar
b.
Planetary
C
HAPTER
2: T
HE
O
BSERVATIONS
M
ODULE
M
ARC
A. M
URISON
Astronomical Applications Department
U.S. Naval Observatory, Washington, DC
C
HAPTER
2: T
HE
O
BSERVATIONS
M
ODULE
6
4
Arrows in Figures 2 and 3 point from derived classes to parent (also called base) classes. This is the standard notation.
Figure 4 -- Observing platform class hierarchy.
Platform
PlanetPlatform
SpacecraftPlatform
EarthPlatform
OrbiterPlatform
ProbePlatform
EarthOrbiterPlatform
epoch
central object
local position
local coord origin
precess
nutate
class method
encapsulated data
multiple inheritance