bodmat |
Table of contents
ProcedureBODMAT ( Return transformation matrix for a body ) SUBROUTINE BODMAT ( BODY, ET, TIPM ) AbstractReturn the J2000 to body Equator and Prime Meridian coordinate transformation matrix for a specified body. Required_ReadingPCK NAIF_IDS TIME KeywordsCONSTANTS DeclarationsIMPLICIT NONE INTEGER BODY DOUBLE PRECISION ET DOUBLE PRECISION TIPM ( 3,3 ) Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- BODY I ID code of body. ET I Epoch of transformation. TIPM O Transformation from Inertial to PM for BODY at ET. Detailed_InputBODY is the integer ID code of the body for which the transformation is requested. Bodies are numbered according to the standard NAIF numbering scheme. ET is the epoch at which the transformation is requested. (This is typically the epoch of observation minus the one-way light time from the observer to the body at the epoch of observation.) Detailed_OutputTIPM is the transformation matrix from Inertial to body Equator and Prime Meridian. The X axis of the PM system is directed to the intersection of the equator and prime meridian. The Z axis points north. ParametersNone. Exceptions1) If data required to define the body-fixed frame associated with BODY are not found in the binary PCK system or the kernel pool, the error SPICE(FRAMEDATANOTFOUND) is signaled. In the case of IAU style body-fixed frames, the absence of prime meridian polynomial data (which are required) is used as an indicator of missing data. 2) If the test for exception (1) passes, but in fact requested data are not available in the kernel pool, an error is signaled by a routine in the call tree of this routine. 3) If the kernel pool does not contain all of the data required to define the number of nutation precession angles corresponding to the available nutation precession coefficients, the error SPICE(INSUFFICIENTANGLES) is signaled. 4) If the reference frame REF is not recognized, an error is signaled by a routine in the call tree of this routine. 5) If the specified body code BODY is not recognized, an error is signaled by a routine in the call tree of this routine. FilesNone. ParticularsThis routine is related to the more general routine TIPBOD which returns a matrix that transforms vectors from a specified inertial reference frame to body equator and prime meridian coordinates. TIPBOD accepts an input argument REF that allows the caller to specify an inertial reference frame. The transformation represented by BODMAT's output argument TIPM is defined as follows: TIPM = [W] [DELTA] [PHI] 3 1 3 If there exists high-precision binary PCK kernel information for the body at the requested time, these angles, W, DELTA and PHI are computed directly from that file. The most recently loaded binary PCK file has first priority followed by previously loaded binary PCK files in backward time order. If no binary PCK file has been loaded, the text P_constants kernel file is used. If there is only text PCK kernel information, it is expressed in terms of RA, DEC and W (same W as above), where RA = PHI - HALFPI() DEC = HALFPI() - DELTA RA, DEC, and W are defined as follows in the text PCK file: RA = RA0 + RA1*T + RA2*T*T + a sin theta i i DEC = DEC0 + DEC1*T + DEC2*T*T + d cos theta i i W = W0 + W1*d + W2*d*d + w sin theta i i where: d = days past J2000. T = Julian centuries past J2000. a , d , and w arrays apply to satellites only. i i i theta = THETA0 * THETA1*T are specific to each planet. i These angles -- typically nodal rates -- vary in number and definition from one planetary system to the next. ExamplesIn the following code fragment, BODMAT is used to rotate the position vector (POS) from a target body (BODY) to a spacecraft from inertial coordinates to body-fixed coordinates at a specific epoch (ET), in order to compute the planetocentric longitude (PCLONG) of the spacecraft. CALL BODMAT ( BODY, ET, TIPM ) CALL MXV ( TIPM, POS, POS ) CALL RECLAT ( POS, RADIUS, PCLONG, LAT ) To compute the equivalent planetographic longitude (PGLONG), it is necessary to know the direction of rotation of the target body, as shown below. CALL BODVCD ( BODY, 'PM', 3, DIM, VALUES ) IF ( VALUES(2) .GT. 0.D0 ) THEN PGLONG = PCLONG ELSE PGLONG = TWOPI() - PCLONG END IF Note that the items necessary to compute the transformation TIPM must have been loaded into the kernel pool (by one or more previous calls to FURNSH). RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) B.V. Semenov (JPL) W.L. Taber (JPL) I.M. Underwood (JPL) K.S. Zukor (JPL) VersionSPICELIB Version 4.2.1, 14-APR-2021 (JDR) Edited the header to comply with NAIF standard. Moved NAIF_IDS required reading from $Literature_References to $Required_Reading section. SPICELIB Version 4.2.0, 27-JUL-2016 (BVS) Updated to use the 3x3 top-left corner of the 6x6 matrix returned by TISBOD instead of fetching kernel data and doing computations in-line. SPICELIB Version 4.1.1, 01-FEB-2008 (NJB) The routine was updated to improve the error messages created when required PCK data are not found. Now in most cases the messages are created locally rather than by the kernel pool access routines. In particular missing binary PCK data will be indicated with a reasonable error message. SPICELIB Version 4.1.0, 25-AUG-2005 (NJB) Updated to remove non-standard use of duplicate arguments in MXM call. Calls to ZZBODVCD have been replaced with calls to BODVCD. SPICELIB Version 4.0.0, 12-FEB-2004 (NJB) Code has been updated to support satellite ID codes in the range 10000 to 99999 and to allow nutation precession angles to be associated with any object. Implementation changes were made to improve robustness of the code. SPICELIB Version 3.2.0, 22-MAR-1995 (KSZ) Gets TSIPM matrix from PCKMAT (instead of Euler angles from PCKEUL.) SPICELIB Version 3.0.0, 10-MAR-1994 (KSZ) Ability to get Euler angles from binary PCK file added. This uses the new routine PCKEUL. SPICELIB Version 2.0.1, 10-MAR-1992 (WLT) Comment section for permuted index source lines was added following the header. SPICELIB Version 2.0.0, 04-SEP-1991 (NJB) Updated to handle P_constants referenced to different epochs and inertial reference frames. The header was updated to specify that the inertial reference frame used by BODMAT is restricted to be J2000. SPICELIB Version 1.0.0, 31-JAN-1990 (WLT) (IMU) |
Fri Dec 31 18:35:59 2021