1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286

/*
*+
* Name:
* palPlante
* Purpose:
* Topocentric RA,Dec of a SolarSystem object from heliocentric orbital elements
* Language:
* Starlink ANSI C
* Type of Module:
* Library routine
* Invocation:
* void palPlante ( double date, double elong, double phi, int jform,
* double epoch, double orbinc, double anode, double perih,
* double aorq, double e, double aorl, double dm,
* double *ra, double *dec, double *r, int *jstat );
* Description:
* Topocentric apparent RA,Dec of a SolarSystem object whose
* heliocentric orbital elements are known.
* Arguments:
* date = double (Given)
* TT MJD of observation (JD2400000.5)
* elong = double (Given)
* Observer's east longitude (radians)
* phi = double (Given)
* Observer's geodetic latitude (radians)
* jform = int (Given)
* Element set actually returned (13; Note 6)
* epoch = double (Given)
* Epoch of elements (TT MJD)
* orbinc = double (Given)
* inclination (radians)
* anode = double (Given)
* longitude of the ascending node (radians)
* perih = double (Given)
* longitude or argument of perihelion (radians)
* aorq = double (Given)
* mean distance or perihelion distance (AU)
* e = double (Given)
* eccentricity
* aorl = double (Given)
* mean anomaly or longitude (radians, JFORM=1,2 only)
* dm = double (Given)
* daily motion (radians, JFORM=1 only)
* ra = double * (Returned)
* Topocentric apparent RA (radians)
* dec = double * (Returned)
* Topocentric apparent Dec (radians)
* r = double * (Returned)
* Distance from observer (AU)
* jstat = int * (Returned)
* status: 0 = OK
*  1 = illegal jform
*  2 = illegal e
*  3 = illegal aorq
*  4 = illegal dm
*  5 = numerical error
* Authors:
* PTW: Pat Wallace (STFC)
* TIMJ: Tim Jenness (JAC, Hawaii)
* {enter_new_authors_here}
* Notes:
*  DATE is the instant for which the prediction is required. It is
* in the TT timescale (formerly Ephemeris Time, ET) and is a
* Modified Julian Date (JD2400000.5).
*  The longitude and latitude allow correction for geocentric
* parallax. This is usually a small effect, but can become
* important for nearEarth asteroids. Geocentric positions can be
* generated by appropriate use of routines palEpv (or palEvp) and
* palUe2pv.
*  The elements are with respect to the J2000 ecliptic and equinox.
*  A choice of three different elementset options is available:
*
* Option JFORM = 1, suitable for the major planets:
*
* EPOCH = epoch of elements (TT MJD)
* ORBINC = inclination i (radians)
* ANODE = longitude of the ascending node, big omega (radians)
* PERIH = longitude of perihelion, curly pi (radians)
* AORQ = mean distance, a (AU)
* E = eccentricity, e (range 0 to <1)
* AORL = mean longitude L (radians)
* DM = daily motion (radians)
*
* Option JFORM = 2, suitable for minor planets:
*
* EPOCH = epoch of elements (TT MJD)
* ORBINC = inclination i (radians)
* ANODE = longitude of the ascending node, big omega (radians)
* PERIH = argument of perihelion, little omega (radians)
* AORQ = mean distance, a (AU)
* E = eccentricity, e (range 0 to <1)
* AORL = mean anomaly M (radians)
*
* Option JFORM = 3, suitable for comets:
*
* EPOCH = epoch of elements and perihelion (TT MJD)
* ORBINC = inclination i (radians)
* ANODE = longitude of the ascending node, big omega (radians)
* PERIH = argument of perihelion, little omega (radians)
* AORQ = perihelion distance, q (AU)
* E = eccentricity, e (range 0 to 10)
*
* Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not
* accessed.
*  Each of the three element sets defines an unperturbed heliocentric
* orbit. For a given epoch of observation, the position of the body
* in its orbit can be predicted from these elements, which are
* called "osculating elements", using standard twobody analytical
* solutions. However, due to planetary perturbations, a given set
* of osculating elements remains usable for only as long as the
* unperturbed orbit that it describes is an adequate approximation
* to reality. Attached to such a set of elements is a date called
* the "osculating epoch", at which the elements are, momentarily,
* a perfect representation of the instantaneous position and
* velocity of the body.
*
* Therefore, for any given problem there are up to three different
* epochs in play, and it is vital to distinguish clearly between
* them:
*
* . The epoch of observation: the moment in time for which the
* position of the body is to be predicted.
*
* . The epoch defining the position of the body: the moment in time
* at which, in the absence of purturbations, the specified
* position (mean longitude, mean anomaly, or perihelion) is
* reached.
*
* . The osculating epoch: the moment in time at which the given
* elements are correct.
*
* For the majorplanet and minorplanet cases it is usual to make
* the epoch that defines the position of the body the same as the
* epoch of osculation. Thus, only two different epochs are
* involved: the epoch of the elements and the epoch of observation.
*
* For comets, the epoch of perihelion fixes the position in the
* orbit and in general a different epoch of osculation will be
* chosen. Thus, all three types of epoch are involved.
*
* For the present routine:
*
* . The epoch of observation is the argument DATE.
*
* . The epoch defining the position of the body is the argument
* EPOCH.
*
* . The osculating epoch is not used and is assumed to be close
* enough to the epoch of observation to deliver adequate accuracy.
* If not, a preliminary call to palPertel may be used to update
* the elementset (and its associated osculating epoch) by
* applying planetary perturbations.
*  Two important sources for orbital elements are Horizons, operated
* by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet
* Center, operated by the Center for Astrophysics, Harvard.
*
* The JPL Horizons elements (heliocentric, J2000 ecliptic and
* equinox) correspond to PAL/SLALIB arguments as follows.
*
* Major planets:
*
* JFORM = 1
* EPOCH = JDCT2400000.5
* ORBINC = IN (in radians)
* ANODE = OM (in radians)
* PERIH = OM+W (in radians)
* AORQ = A
* E = EC
* AORL = MA+OM+W (in radians)
* DM = N (in radians)
*
* Epoch of osculation = JDCT2400000.5
*
* Minor planets:
*
* JFORM = 2
* EPOCH = JDCT2400000.5
* ORBINC = IN (in radians)
* ANODE = OM (in radians)
* PERIH = W (in radians)
* AORQ = A
* E = EC
* AORL = MA (in radians)
*
* Epoch of osculation = JDCT2400000.5
*
* Comets:
*
* JFORM = 3
* EPOCH = Tp2400000.5
* ORBINC = IN (in radians)
* ANODE = OM (in radians)
* PERIH = W (in radians)
* AORQ = QR
* E = EC
*
* Epoch of osculation = JDCT2400000.5
*
* The MPC elements correspond to SLALIB arguments as follows.
*
* Minor planets:
*
* JFORM = 2
* EPOCH = Epoch2400000.5
* ORBINC = Incl. (in radians)
* ANODE = Node (in radians)
* PERIH = Perih. (in radians)
* AORQ = a
* E = e
* AORL = M (in radians)
*
* Epoch of osculation = Epoch2400000.5
*
* Comets:
*
* JFORM = 3
* EPOCH = T2400000.5
* ORBINC = Incl. (in radians)
* ANODE = Node. (in radians)
* PERIH = Perih. (in radians)
* AORQ = q
* E = e
*
* Epoch of osculation = Epoch2400000.5
* History:
* 20120312 (TIMJ):
* Initial version direct conversion of SLA/F.
* Adapted with permission from the Fortran SLALIB library.
* {enter_further_changes_here}
* Copyright:
* Copyright (C) 2004 Patrick T. Wallace
* Copyright (C) 2012 Science and Technology Facilities Council.
* All Rights Reserved.
* Licence:
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 021101301, USA.
* Bugs:
* {note_any_bugs_here}
*
*/
#include "pal.h"
void palPlante ( double date, double elong, double phi, int jform,
double epoch, double orbinc, double anode, double perih,
double aorq, double e, double aorl, double dm,
double *ra, double *dec, double *r, int *jstat ) {
double u[13];
/* Transform conventional elements to universal elements */
palEl2ue( date, jform, epoch, orbinc, anode, perih, aorq, e, aorl,
dm, u, jstat );
/* If succcessful, make the prediction */
if (*jstat == 0) palPlantu( date, elong, phi, u, ra, dec, r, jstat );
}
