cspice_edterm |
|||

## AbstractCSPICE_EDTERM computes a set of points on the umbral or penumbral terminator of a specified target body, where the target shape is modeled as an ellipsoid. ## I/OGiven: trmtyp string indicating the type of terminator to compute: umbral or penumbral. The umbral terminator is the boundary of the portion of the ellipsoid surface in total shadow. The penumbral terminator is the boundary of the portion of the surface that is completely illuminated. Note that in astronomy references, the unqualified word "terminator" refers to the umbral terminator. Here, the unqualified word refers to either type of terminator. Possible values of 'trmtyp' are 'UMBRAL' 'PENUMBRAL' Case and leading or trailing blanks in 'trmtyp' are not significant. [1,c1] = size(trmtyp); char = class(trmtyp) source string name of the body acting as a light source. 'source' 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 "SUN" and "10" are legitimate strings that indicate the Sun is the light source. This routine assumes that a kernel variable representing the light source's radii is present in the kernel pool. Normally the kernel variable would be defined by loading a PCK file. The shape of the light source is always modeled as a sphere, regardless of whether radii defining a triaxial ellipsoidal shape model are available in the kernel pool. The maximum radius of the body is used as the radius of the sphere. [1,c2] = size(source); char = class(source) target string 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 a kernel variable representing the target's radii is present in the kernel pool. Normally the kernel variable would be defined by loading a PCK file. [1,c3] = size(target); char = class(target) et epoch of participation of the observer, expressed as ephemeris seconds past J2000 TDB: 'et' is the epoch at which the observer's position is computed. When aberration corrections are not used, 'et' is also the epoch at which the position and orientation of the target body and position of the light source are computed. When aberration corrections are used, 'et' is the epoch at which the observer's position relative to the solar system barycenter is computed; in this case the position and orientation of the target body are computed at et-lt, where lt is the one-way light time between the target body's center and the observer. See the description of 'abcorr' below for details. [1,1] = size(et); double = class(et) fixref string name of the reference frame relative to which the output terminator points are expressed. This must be a body-centered, body-fixed frame associated with the target. The frame's axes must be compatible with the triaxial ellipsoidal shape model associated with the target body (normally provide via a PCK): this routine assumes that the first, second, and third axis lengths correspond, respectively, to the x, y, and z-axes of the frame designated by 'fixref'. 'fixref' may refer to a built-in frame (documented in the Frames Required Reading) or a frame defined by a loaded frame kernel (FK). The orientation of the frame designated by 'fixref' is evaluated at epoch of participation of the target body. See the descriptions of 'et' and 'abcorr' for details. [1,c4] = size(fixref); char = class(fixref) abcorr string indicating the aberration correction to be applied when computing the observer-target position, the orientation of the target body, and the target- source position vector. 'abcorr' may be any of the following. 'NONE' Apply no correction. Compute the terminator points using the position of the light source and target, and the orientation of the target, at 'et'. Let 'lt' represent the one-way light time 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 target body's center 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 terminator points at the approximate time they emitted photons arriving at the observer at 'et' (the difference between light time to the target center and light time to the terminator points is ignored). The light time correction uses an iterative solution of the light time equation. The solution invoked by the 'LT' option uses one iteration. The target position as seen by the observer, the position of the light source as seen from the target at et-lt, and the 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 positions obtained with the 'LT' option to account for the observer's velocity relative to the solar system barycenter. This correction also applies to the position of the light source relative to the target. The result is the apparent terminator 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. The position and rotation of the target body and the position of the light source relative to the target are corrected for light time. 'CN+S' Converged Newtonian light time and stellar aberration corrections. [1,c5] = size(abcorr); char = class(abcorr) obsrvr string 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. [1,c5] = size(obsrvr); char = class(obsrvr) npts number of terminator points to compute. [1,1] = size(npts); int32 = class(npts) the call: [ trgepc, obspos, termpts] = ## 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. Use the meta-kernel shown below to load the required SPICE kernels. KPL/MK File name: standard.tm This meta-kernel is intended to support operation of SPICE example programs. The kernels shown here should not be assumed to contain adequate or correct versions of data required by SPICE-based user applications. In order for an application to use this meta-kernel, the kernels referenced here must be present in the user's current working directory. The names and contents of the kernels referenced by this meta-kernel are as follows: File name Contents --------- -------- de421.bsp Planetary ephemeris pck00010.tpc Planet orientation and radii naif0010.tls Leapseconds \begindata KERNELS_TO_LOAD = ( 'de421.bsp', 'pck00010.tpc', 'naif0010.tls' ) \begintext Example: Compute sets of umbral and penumbral terminator points on the Moon. Perform a consistency check using the solar incidence angle at each point. We expect to see a solar incidence angle of approximately 90 degrees. Since the solar incidence angle is measured between the local outward normal and the direction to the center of the Sun, the solar incidence angle at an umbral terminator point should exceed 90 degrees by approximately the angular radius of the Sun, while the angle at a penumbral terminator points should be less than 90 degrees by that amount. META = 'standard.tm'; NPTS = 3; first = true; trmtyps = { 'UMBRAL', 'PENUMBRAL' }; s = [ -1, 1]; R2D = cspice_dpr(); % % Load meta-kernel. % cspice_furnsh( META ) % % Set observation time. % utc = '2007 FEB 3 00:00:00.000'; et = cspice_str2et( utc ); % % Set participating objects, frame, and aberration % corrections. % obsrvr = 'EARTH'; target = 'MOON'; source = 'SUN'; fixref = 'IAU_MOON'; abcorr = 'LT+S'; % % Look up the radii of the sun. % srcrad = cspice_bodvrd( source, 'RADII', 3 ); % % Compute terminator points. % for trmidx=1:2 [ trgepc, obspos, trmpts] = ## ParticularsThis routine models the boundaries of shadow regions on an ellipsoidal target body "illuminated" by a spherical light source. Light rays are assumed to travel along straight lines; refraction is not modeled. Points on the target body's surface are classified according to their illumination as follows: - A target surface point X for which no vector from X to any point in the light source intersects the target, except at X, is considered to be "completely illuminated." - A target surface point X for which each vector from X to a point in the light source intersects the target at points other than X is considered to be "in total shadow." - All other target points are considered to be in partial shadow. In this routine, we use the term "umbral terminator" to denote the curve usually called the "terminator": this curve is the boundary of the portion of the target body's surface that lies in total shadow. We use the term "penumbral terminator" to denote the boundary of the completely illuminated portion of the surface. In general, the terminator on an ellipsoid is a more complicated curve than the limb (which is always an ellipse). Aside from various special cases, the terminator does not lie in a plane. However, the condition for a point X on the ellipsoid to lie on the terminator is simple: a plane tangent to the ellipsoid at X must also be tangent to the light source. If this tangent plane does not intersect the vector from the center of the ellipsoid to the center of the light source, then X lies on the umbral terminator; otherwise X lies on the penumbral terminator. ## Required ReadingFor important details concerning this module's function, please refer to the CSPICE routine edterm_c. MICE.REQ ## Version-Mice Version 1.0.0, 18-JUN-2012, EDW (JPL) ## Index_Entriesfind terminator on ellipsoid find umbral terminator on ellipsoid find penumbral terminator on ellipsoid |

Wed Apr 5 18:00:31 2017