cspice_sincpt |
|||

## AbstractCSPICE_SINCPT computes the surface intercept of the ray on a target body at a specified epoch, optionally corrected for light time and stellar aberration, given an observer and a direction vector defining a ray, This routine supersedes cspice_srfxpt, which does not have an input argument for the target body-fixed frame name. ## I/OGiven: method a short string providing parameters defining the computation method to be used. In the syntax descriptions below, items delimited by brackets are optional. [1,c1] = size(method); char = class(method) or [1,1] = size(method); cell = class(method) `method' may be assigned the following values: 'ELLIPSOID' The intercept computation uses a triaxial ellipsoid to model the surface of the target body. The ellipsoid's radii must be available in the kernel pool. 'DSK/UNPRIORITIZED[/SURFACES = <surface list>]' The intercept computation uses topographic data to model the surface of the target body. These data must be provided by loaded DSK files. The surface list specification is optional. The syntax of the list is <surface 1> [, <surface 2>...] If present, it indicates that data only for the listed surfaces are to be used; however, data need not be available for all surfaces in the list. If absent, loaded DSK data for any surface associated with the target body are used. The surface list may contain surface names or surface ID codes. Names containing blanks must be delimited by double quotes, for example 'SURFACES = "Mars MEGDR 128 PIXEL/DEG"' If multiple surfaces are specified, their names or IDs must be separated by commas. See the Particulars section below for details concerning use of DSK data. Neither case nor white space are significant in `method', except within double-quoted strings. For example, the string " eLLipsoid " is valid. Within double-quoted strings, blank characters are significant, but multiple consecutive blanks are considered equivalent to a single blank. Case is not significant. So "Mars MEGDR 128 PIXEL/DEG" is equivalent to " mars megdr 128 pixel/deg " but not to "MARS MEGDR128PIXEL/DEG" target the name of the target body. `target' is case-insensitive, and leading and trailing blanks in `target' are not significant. Optionally, you may supply a string containing the integer ID code for the object. For example both 'MOON' and '301' are legitimate strings that indicate the moon is the target body. [1,c2] = size(target); char = class(target) or [1,1] = size(target); cell = class(target) When the target body's surface is represented by a tri-axial ellipsoid, this routine assumes that a kernel variable representing the ellipsoid's radii is present in the kernel pool. Normally the kernel variable would be defined by loading a PCK file. et the epoch, expressed as seconds past J2000 TDB, of the observer: 'et' is the epoch at which the observer's state is computed. [1,1] = size(et); double = class(et) When aberration corrections are not used, 'et' is also the epoch at which the position and orientation of the target body are computed. When aberration corrections are used, 'et' is the epoch at which the observer's state relative to the solar system barycenter is computed; in this case the position and orientation of the target body are computed at et-lt or et+lt, where 'lt' is the one-way light time between the intercept point and the observer, and the sign applied to 'lt' depends on the selected correction. See the description of 'abcorr' below for details. fixref the name of a body-fixed reference frame centered on the target body. `fixref' may be any such frame supported by the SPICE system, including built-in frames (documented in the Frames Required Reading) and frames defined by a loaded frame kernel (FK). The string `fixref' is case-insensitive, and leading and trailing blanks in `fixref' are not significant. [1,c3] = size(fixref); char = class(fixref) or [1,1] = size(fixref); cell = class(fixref) The output intercept point `spoint' and the observer-to- intercept vector `srfvec' will be expressed relative to this reference frame. abcorr the aberration correction to apply when computing the observer-target state and the orientation of the target body. [1,c4] = size(abcorr); char = class(abcorr) or [1,1] = size(abcorr); cell = class(abcorr) 'abcorr' may be any of the following. "NONE" Apply no correction. Return the geometric surface intercept point on the target body. Let 'lt' represent the one-way light time between the observer and the surface intercept point (note: NOT between the observer and the target body's center). The following values of 'abcorr' apply to the "reception" case in which photons depart from the intercept point's location at the light-time corrected epoch et-lt and *arrive* at the observer's location at 'et': "LT" Correct for one-way light time (also called "planetary aberration") using a Newtonian formulation. This correction yields the location of the surface intercept point at the moment it emitted photons arriving at the observer at 'et'. The light time correction uses an iterative solution of the light time equation. The solution invoked by the "LT" option uses one iteration. Both the target state as seen by the observer, and rotation of the target body, are corrected for light time. "LT+S" Correct for one-way light time and stellar aberration using a Newtonian formulation. This option modifies the state obtained with the "LT" option to account for the observer's velocity relative to the solar system barycenter. The result is the apparent surface intercept point as seen by the observer. "CN" Converged Newtonian light time correction. In solving the light time equation, the "CN" correction iterates until the solution converges. Both the state and rotation of the target body are corrected for light time. "CN+S" Converged Newtonian light time and stellar aberration corrections. The following values of 'abcorr' apply to the "transmission" case in which photons *depart* from the observer's location at 'et' and arrive at the intercept point at the light-time corrected epoch ET+LT: "XLT" "Transmission" case: correct for one-way light time using a Newtonian formulation. This correction yields the intercept location at the moment it receives photons emitted from the observer's location at 'et'. The light time correction uses an iterative solution of the light time equation. The solution invoked by the "LT" option uses one iteration. Both the target state as seen by the observer, and rotation of the target body, are corrected for light time. "XLT+S" "Transmission" case: correct for one-way light time and stellar aberration using a Newtonian formulation This option modifies the intercept obtained with the "XLT" option to account for the observer's velocity relative to the solar system barycenter. "XCN" Converged Newtonian light time correction. This is the same as XLT correction but with further iterations to a converged Newtonian light time solution. "XCN+S" "Transmission" case: converged Newtonian light time and stellar aberration corrections. Case and embedded blanks are not significant in 'abcorr'. obsrvr the name of the observing body. This is typically a spacecraft, the earth, or a surface point on the earth. [1,c5] = size(obsrvr); char = class(obsrvr) or [1,1] = size(obsrvr); cell = class(obsrvr) 'obsrvr' is case-insensitive, and leading and trailing blanks in 'obsrvr' are not significant. Optionally, you may supply a string containing the integer ID code for the object. For example both "MOON" and "301" are legitimate strings that indicate the moon is the observer. dref the name of the reference frame relative to which the ray's direction vector is expressed. This may be any frame supported by the SPICE system, including built-in frames (documented in the Frames Required Reading) and frames defined by a loaded frame kernel (FK). The string `dref' is case-insensitive, and leading and trailing blanks in `dref' are not significant. [1,c6] = size(dref); char = class(dref) or [1,1] = size(dref); cell = class(dref) When `dref' designates a non-inertial frame, the orientation of the frame is evaluated at an epoch dependent on the frame's center and, if the center is not the observer, on the selected aberration correction. See the description of the direction vector `dvec' for details. dvec the pointing vector emanating from the observer. The intercept with the target body's surface of the ray defined by the observer and 'dvec' is sought. [3,1] = size(dvec); double = class(dvec) 'dvec' is specified relative to the reference frame designated by 'dref'. Non-inertial reference frames are treated as follows: if the center of the frame is at the observer's location, the frame is evaluated at 'et'. If the frame's center is located elsewhere, then letting 'ltcent' be the one-way light time between the observer and the central body associated with the frame, the orientation of the frame is evaluated at et-ltcent, et+ltcent, or 'et' depending on whether the requested aberration correction is, respectively, for received radiation, transmitted radiation, or is omitted. 'ltcent' is computed using the method indicated by 'abcorr'. the call: [ spoint, trgepc, srfvec, found] = ## ExamplesAny numerical results shown for this example may differ between platforms as the results depend on the SPICE kernels used as input and the machine specific arithmetic implementation. The following program computes surface intercept points on Mars for the boresight and FOV boundary vectors of the MGS MOC narrow angle camera. The intercepts are computed for a single observation epoch. Light time and stellar aberration corrections are used. For simplicity, camera distortion is ignored. % % Local variables % abcorr = 'CN+S'; camera = 'MGS_MOC_NA'; fixref = 'IAU_MARS'; method = 'Ellipsoid'; obsrvr = 'MGS'; target = 'Mars'; utc = '2003 OCT 13 06:00:00 UTC'; NCORNR = 4; % % Load kernel files. % cspice_furnsh( 'standard.tm' ); cspice_furnsh( { '/kernels/MGS/ik/moc20.ti', ... '/kernels/MGS/sclk/MGS_SCLKSCET.00061.tsc' ,... '/kernels/MGS/spk/mgs_ext12_ipng_mgs95j.bsp',... '/kernels/MGS/ck/mgs_sc_ext12.bc' } ) % % Convert the UTC request time to ET (seconds past % J2000, TDB). % et = cspice_str2et( utc ); % % Get the MGS MOC Narrow angle camera (MGS_MOC_NA) % ID code. Then look up the field of view (FOV) % parameters. % [ camid, found ] = cspice_bodn2c( camera ); if ( ~found ) txt = sprintf( [ 'SPICE(NOTRANSLATION) ' ... 'Could not find ID code for instrument %s.' ], ... camera); error( txt ) end % % cspice_getfov will return the name of the camera-fixed frame % in the string 'dref', the camera boresight vector in % the array 'bsight', and the FOV corner vectors in the % array 'bounds'. % [shape, dref, bsight, bounds] = cspice_getfov( camid, NCORNR); fprintf ( ['\n' ... 'Surface Intercept Locations for Camera\n' ... 'FOV Boundary and Boresight Vectors\n' ... '\n' ... ' Instrument: %s\n' ... ' Epoch: %s\n' ... ' Aberration correction: %s\n' ... '\n'], ... camera, utc, abcorr ) for i=1:NCORNR+1 if( i <= NCORNR ) fprintf( 'Corner vector %d\n\n', i) dvec = bounds(:,i); end if ( i == (NCORNR + 1) ) fprintf( 'Boresight vector\n\n' ) dvec = bsight; end % % Compute the surface intercept point using % the specified aberration corrections. % [ spoint, trgepc, srfvec, found ] = ... ## ParticularsGiven a ray defined by a direction vector and the location of an observer, ## Required ReadingFor important details concerning this module's function, please refer to the CSPICE routine sincpt_c. MICE.REQ DSK.REQ FRAMES.REQ NAIF_IDS.REQ PCK.REQ SPK.REQ TIME.REQ ## Version-Mice Version 2.0.0, 04-APR-2017, EDW (JPL), NJB (JPL) Header update to reflect support for use of DSKs. Edited I/O section to conform to NAIF standard for Mice documentation. -Mice Version 1.0.3, 12-MAR-2012, SCK (JPL) References to the new 'cspice_pxfrm2' routine were added to the 'I/O returns' section. A problem description was added to the 'Examples' section, and the references to 'cspice_srfxpt' and the second example were removed. -Mice Version 1.0.2, 14-JUL-2010, EDW (JPL) Corrected minor typo in header. -Mice Version 1.0.1, 23-FEB-2009, EDW (JPL) Added proper markers for usage string variable types. -Mice Version 1.0.0, 11-FEB-2008, EDW (JPL) ## Index_Entriesfind surface intercept point find intersection of ray and target body surface find intercept of ray on target body surface |

Wed Apr 5 18:00:34 2017