cspice_subpt_pl02 |
|||

## AbstractDeprecated: This routine has been superseded by the CSPICE routine cspice_subpnt. This routine is supported for purposes of backward compatibility only. CSPICE_SUBPT_PL02 returns the rectangular coordinates of the sub-observer point on a target body at a particular epoch, optionally corrected for light time and stellar aberration. The target body's surface is represented by a triangular plate model contained in a type 2 DSK segment. Return the sub-observer point's coordinates expressed in the body-fixed frame associated with the target body. Also, return the observer's altitude above the target body. For important details concerning this module's function, please refer to the CSPICE routine subpt_pl02. ## I/OGiven: handle is DAS file handle of a DSK file open for read access. This kernel must contain a type 2 segment that provides a plate model representing the entire surface of the target body. dladsc is DLA descriptor of a DSK segment representing the surface of the target body. method a short string specifying the computation method to be used. The choices are: 'Intercept' The sub-observer point is defined as the plate model surface intercept of the ray starting at the observer and passing through the target's center. 'Ellipsoid near point' The sub-observer point is defined as the plate model surface intercept of the ray starting at the observer and passing through the nearest point to the observer on a reference ellipsoid associated with the target body. This option requires that the reference ellipsoid's radii be available in the kernel pool. For both computation methods, this routine finds a sub-point on the same side of the target body as the observer. If the observer is inside the target body, the 'sub-point' will actually be above the observer. In the case of multiple intercepts, the outermost one (that is, the one farthest from the target center) is selected. Neither case nor white space are significant in the string 'method'. For example, the string ' ellipsoidNEARPOINT' is valid. target is 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. This routine assumes that the target body's surface is represented by a plate model, and that a DSK file containing the plate model has been loaded via dasopr_c. et is epoch, represented as seconds past J2000 TDB, at which the sub-observer point on the target body is to be computed. When aberration corrections are used, `et' refers to the epoch at which radiation is received at the observer. abcorr indicates the aberration corrections to be applied to the position and orientation of the target body to account for one-way light time and stellar aberration. See the discussion in the Particulars section for recommendations on how to choose aberration corrections. `abcorr' may be any of the following: 'NONE' Apply no correction. Use the geometric position of the target body relative to the observer; evaluate the target body's orientation at `et'. The following values of `abcorr' apply to the 'reception' case in which photons depart from the target'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 uses the position and orientation of the target 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 (see Particulars for details). The solution invoked by the 'LT' option uses one iteration. 'LT+S' Correct for one-way light time and stellar aberration using a Newtonian formulation. This option modifies the position obtained with the 'LT' option to account for the observer's velocity relative to the solar system barycenter. The result is the sub-observer point computed using the apparent position and orientation of the target 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 (three iterations on all supported platforms). 'CN+S' Converged Newtonian light time and stellar aberration corrections. obsrvr is name of the observing body. This is typically a spacecraft, the earth, or a surface point on the earth. `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 'EARTH' and '399' are legitimate strings that indicate the earth is the observer. the call: ## 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. Find the sub-observer point on Phobos as seen from Earth for a specified sequence of times. Perform the computation twice, using both the "intercept" and "ellipsoid near point" options. Compute the corresponding sub-subobserver point values using an ellipsoidal surface for comparison. In the following example program, the file phobos_3_3.dsk is a DSK file containing a type 2 segment that provides a plate model representation of the surface of Phobos. The file mar097.bsp is a binary SPK file containing data for Phobos, the Earth, and the Sun for a time interval bracketing the date 2006 NOV 3 00:00:00 UTC. pck00010.tpc is a planetary constants kernel file containing radii and rotation model constants. naif0010.tls is a leapseconds kernel. All of the kernels other than the DSK file should be loaded via a meta-kernel. An example of the contents of such a kernel is: KPL/MK \begindata KERNELS_TO_LOAD = ( 'naif0010.tls' 'pck00010.tpc' 'mar097.bsp' ) \begintext PRO subpt_pl02_t, meta, dsk ;; ;; Constants ;; NCORR = 2 NSAMP = 3 NMETHOD = 2 TIMLEN = 40 FIXREF = 'IAU_PHOBOS' TOL = 1.d-12 ;; ;; Initial values ;; abcorrs = [ 'NONE', 'CN+S' ] emethods = [ 'Intercept: ellipsoid', 'Near point: ellipsoid' ] plmethods = [ 'Intercept', 'Ellipsoid near point' ] obsrvr = 'Earth' target = 'Phobos' ;; ;; Load the metakernel. ;; cspice_furnsh, meta ;; ;; Open the DSK file for read access. ;; We use the DAS-level interface for ;; this function. ;; cspice_dasopr, dsk, handle ;; ;; Begin a forward search through the ;; kernel, treating the file as a DLA. ;; In this example, it's a very short ;; search. ;; cspice_dlabfs, handle, dladsc, found if ~found then begin ;; ;; We arrive here only if the kernel ;; contains no segments. This is ;; unexpected, but we're prepared for it. ;; message, 'No segments found in DSK file ', dsk endif ;; ;; If we made it this far, `dladsc' is the ;; DLA descriptor of the first segment. ;; ;; Now compute sub points using both computation ;; methods. We'll vary the aberration corrections ;; and the epochs. ;; et0 = 0.D stepsize = 1.d6 for i = 0, NSAMP-1 do begin ;; ;; Set the computation time for the ith sample. ;; et = et0 + i * stepsize cspice_timout, et, $ 'YYYY-MON-DD HR:MN:SC.### ::TDB(TDB)', $ TIMLEN, timstr print, 'Observation epoch: ', timstr print for coridx = 0, NCORR-1 do begin abcorr = abcorrs[ coridx ] print, ' abcorr = ', abcorr for midx = 0, NMETHOD-1 do begin ;; ;; Select the computation method. ;; method = plmethods( midx ) print, ' Method = ', method print ;; ;; Compute the sub-observer point using a plate ;; model representation of the target's surface. ;; ## Particulars
## Required ReadingICY.REQ DSK.REQ PCK.REQ SPK.REQ TIME.REQ ## Version-Icy Version 1.0.0, 15-DEC-2016, ML (JPL), EDW (JPL) ## Index_Entriessub-observer point using triangular plate_model sub-observer point using type_2 dsk sub-spacecraft point using triangular plate_model sub-spacecraft point using type_2 dsk |

Wed Apr 5 17:58:04 2017