KPL/IK ASPERA Instrument kernel =========================================================================== This instrument kernel (I-kernel) contains Mars Express ASPERA sensor geometry parameters. Version and Date --------------------------------------------------------------------------- Version 0.5 -- September 13, 2004 -- Boris Semenov, NAIF/JPL Added a block specifying IMA sector layout with respect to the MEX_ASPERA_IMAS frame. Added discussion regarding IMA vs. IMAS frame provided by Rudy Frahm, SwRI. Updated IMA related comments. Version 0.4 -- March 14, 2004 -- Boris Semenov, NAIF/JPL Corrected NDP1 and NPD2 sector view directions. Version 0.3 -- November 24, 2003 -- Boris Semenov, NAIF/JPL Added SS1 and SS2 parameters. Version 0.2 -- September 9, 2003 -- Boris Semenov, NAIF/JPL Updated to match the frame and sector definitions established by the ASPERA team: -- replaced NDP with NPD1 and NPD2 -- re-defined the ELS, NPD, and IMA sector view directions to match the nomenclature established by the ASPERA team -- included view directions for all 16 x 16 IMA sectors -- added sector layout diagrams Version 0.1 -- July 18, 2003 -- Boris Semenov, NAIF/JPL Corrected spelling and grammar. Version 0.0 -- May 19, 2003 -- Boris Semenov, NAIF/JPL Initial release. References --------------------------------------------------------------------------- 1. ``Kernel Pool Required Reading'' 2. ``C-kernel Required Reading'' 3. ``ASPERA-3'' ME-ASP-DS-0002, Draft Rev. 1, 23 April, 1999 4. Mars Express Frames Definition Kernel (FK), latest version. 5. ASPERA Sensor Numbering, by Stas Barabash, Latest Version, Aug 2003 6. E-mail from Rudy Frahm, SwRI; September 8, 2004. Implementation Notes -------------------------------------------------------- Applications that need SPICE I-kernel data must ``load'' the I-kernel file, normally during program initialization. Loading the kernel using the SPICELIB routine FURNSH causes the data items and their associated values present in the kernel to become associated with a data structure called the ``kernel pool''. The application program may then obtain the value(s) for any IK data item using the SPICELIB routines GDPOOL, GIPOOL, GCPOOL. Routine GETFOV may also be used if the file contains instrument field-of-view (FOV) specifications. See [1] for details. This file was created with, and can be updated with a text editor or word processor. Conventions for Specifying Data -------------------------------------------------------- Data items are specified using ``keyword=value'' assignments [1]. All keywords referencing values in this I-kernel start with the characters `INS' followed by the NAIF MEX instrument ID code, constructed using the spacecraft ID number (-41) followed by the NAIF three digit ID number for one of its sensors -- Electron Spectrometer, ELS (120), Neutral Particle Imager, NPI (130), Neutral Particle Detector 1, NPD1 (141), Neutral Particle Detector 2, NPD2 (142), Ion Mass Analyser, IMA (151), Ion Mass Analyser Sensor Head, IMAS (152), Solar Sensor 1, SS1 (161), or Solar Sensor 2, SS2 (162.) These IDs are defined in [4] as follows: Instrument name ID -------------------- ------ MEX_ASPERA -41100 MEX_ASPERA_ELS -41120 MEX_ASPERA_NPI -41130 MEX_ASPERA_NPD1 -41141 MEX_ASPERA_NPD2 -41142 MEX_ASPERA_IMA -41151 MEX_ASPERA_IMAS -41152 MEX_ASPERA_SS1 -41161 MEX_ASPERA_SS2 -41162 The remainder of the keyword is an underscore character followed by the unique name of the data item. For example, the number of sectors in the NPI aperture is specified by INS-41130_NUMBER_OF_SECTORS The upper bound on the length of all keywords is 32 characters. If a keyword is included in more then one file, or if the same keyword appears more than once within a single file, the last assignment supersedes any earlier assignments. Overview -------------------------------------------------------- From [TBD]: "ASPERA description. To be copied from TBD source provided by the ASPERA team." Mounting Alignment -------------------------------------------------------- Refer to the latest version of the Mars Express Frames Definition Kernel (FK) [4] for the ASPERA reference frame definitions and mounting alignment information. Scanner Characteristics -------------------------------------------------------- The following essential parameters of the ASPERA main unit scanner are taken from [3]: ----------------------------- ----------- ------- Parameter name Value Unit ----------------------------- ----------- ------- maximum angle of rotation +/-100.00 deg angular position resolution 0.05 deg operational rotation rate 1.0/3.0/6.0 deg/sec maximum rotation rate 25.0 deg/sec ----------------------------- ----------- ------- The parameters are provided in the assignments below using the same units as in the table. \begindata INS-41111_ROTATION_RANGE = ( -100, 100 ) INS-41111_POSITION_ACCURACY = ( 0.05 ) INS-41111_ROTATION_RATE = ( 1.0, 3.0, 6.0 ) INS-41111_ROTATION_RATE_MAX = ( 25.0 ) \begintext Sensor Layout -------------------------------------------------------- This section contains assignments specifying the sensor layout by defining individual sector view directions for each of the ASPERA sensors -- ELS, NPI, NPD1, NPD2, IMA, SS1, and SS2. The combined aperture of each of the sensors is broken down into a number of equally or unequally spaced sectors to achieve the necessary spatial resolution within the sensor's sensor plane and in the direction normal to it (applicable for IMA only, since for the other sensors the cross-plane spatial resolution is achieved by scanning.) This table summarizes the individual sensor sector layout (based on [5]): --------- --------------------- --------------------- Sensor Number of Sectors Sector size, deg Name in-plane cross-plane in-plane cross-plane --------- -------- ----------- -------- ----------- ELS 16 1 22.5 4.0 NPI 32 1 11.25 9.0 NPD1 3 1 30.0 9.0 NPD2 3 1 30.0 9.0 IMA 16 16 22.5 5.625 SS1 1 1 90.0 2.0 SS2 1 1 90.0 2.0 --------- --------------------- --------------------- The parameters from the table are provided for each sensor using the following keywords: NUMBER_OF_SECTORS -- contains two integers for in-plane and cross-plane sector numbers SECTOR_SIZE -- contains two numbers for in-plane and cross-plane sector size, in degrees FRAME -- contains the name of the frame in which the sector view directions are defined SECTOR_DIRECTIONS -- contains sector center view directions for each sector in the sensor symmetry plane. (Note that this keyword does not provide the direction of all 320 IMA sectors but ONLY for the 16 located in the symmetry plane.) The order of vectors in the SECTOR_DIRECTIONS is different for different sensors. It is described for each particular sensor in that sensor's section of this IK. Section "IK Code Example" provided at the bottom of file includes a example C function and an example FORTRAN subroutine that can be used to retrieve values of these parameters for a specifies sensor. ELS Sector Layout The ELS's 360.0 x 4.0 degrees aperture is split into 16 22.5 x 4.0 degrees sectors. All sector view directions are equally spaced within the YZ plane of the MEX_ASPERA_ELS frame. The "view direction" of each sector is inwards, from the sector position through the center of the aperture. The boundary between sectors "0" and "15" is coincident with the frame's Z axis, thus the sector "0" view direction is 11.25 degrees off the -Z axis towards -Y axis. This diagram illustrates ELS sector layout: ^ +Zels | S# indicate the sector "#" V7 | V8 position in the sensor V6 ....|.... V9 assembly. .' S15 | S0 `. V5 .' S14 | S1 `. V10 V# indicate the sector "#" . S13 | S2 . view direction. V4 . | . V11 .S12 | S3. For example, for . o--------------> +Yels Sector "1" the view .S11 / +Xels S4. direction is the vector V3 . / . V12 emanating from the .S10 / S5. aperture center through V2 . / S6 . V13 the point designated `. / S8 S7 .' by "V1". V1/ ......... ' V14 / V0 V15 V View direction of sector "1" These keywords contains ELS sector parameters: \begindata INS-41120_NUMBER_OF_SECTORS = ( 16, 1 ) INS-41120_SECTOR_SIZE = ( 22.5, 4.0 ) INS-41120_FRAME = 'MEX_ASPERA_ELS' INS-41120_SECTOR_DIRECTIONS = ( 0.00000000 -0.19509032 -0.98078528 0.00000000 -0.55557023 -0.83146961 0.00000000 -0.83146961 -0.55557023 0.00000000 -0.98078528 -0.19509032 0.00000000 -0.98078528 0.19509032 0.00000000 -0.83146961 0.55557023 0.00000000 -0.55557023 0.83146961 0.00000000 -0.19509032 0.98078528 0.00000000 0.19509032 0.98078528 0.00000000 0.55557023 0.83146961 0.00000000 0.83146961 0.55557023 0.00000000 0.98078528 0.19509032 0.00000000 0.98078528 -0.19509032 0.00000000 0.83146961 -0.55557023 0.00000000 0.55557023 -0.83146961 0.00000000 0.19509032 -0.98078528 ) \begintext NPI Sensor Layout The NPI's 360.0 x 9.0 degrees aperture is split into 32 sectors. Each sector's aperture is 11.25 x 9.0 degrees and the sector view directions are 11.25 degrees apart. All sector view directions are equally spaced within the YZ plane of the MEX_ASPERA_NPI frame. The "view direction" of each sector is outwards, from center of the aperture through the sector position. The boundary between sectors "0" and "31" is coincident with the frame's Z axis, thus the "0" sector view direction is 5.625 degrees off the +Z axis towards +Y. This diagram illustrates NPI sector layout: +Znpi Sector "2" ^ view direction | ^ S# indicate the sector "#" V30 | V0 / position in the V28 ....|.... V2 assembly. .' S30 |S0 /`. V26 .'S28 | S2 `. V4 V# indicate the sector "#" .S26 | / S4 . view direction. V24 . | / . V6 .S24 |/ S6. For example, for . o--------------> +Ynpi Sector "2" the view .S22 +Xnpi S8. direction is the vector V22 . . V8 emanating from the .S20 S10. aperture center through V20 . S18 S12 . V10 the point designated `. S16 S14 .' by "V2". V18 ......... ' V12 V16 V14 These keywords contains NPI sector parameters: \begindata INS-41130_NUMBER_OF_SECTORS = ( 32, 1 ) INS-41130_SECTOR_SIZE = ( 11.25, 9.0 ) INS-41130_FRAME = 'MEX_ASPERA_NPI' INS-41130_SECTOR_DIRECTIONS = ( 0.00000000 0.09801714 0.99518473 0.00000000 0.29028468 0.95694034 0.00000000 0.47139674 0.88192126 0.00000000 0.63439328 0.77301045 0.00000000 0.77301045 0.63439328 0.00000000 0.88192126 0.47139674 0.00000000 0.95694034 0.29028468 0.00000000 0.99518473 0.09801714 0.00000000 0.99518473 -0.09801714 0.00000000 0.95694034 -0.29028468 0.00000000 0.88192126 -0.47139674 0.00000000 0.77301045 -0.63439328 0.00000000 0.63439328 -0.77301045 0.00000000 0.47139674 -0.88192126 0.00000000 0.29028468 -0.95694034 0.00000000 0.09801714 -0.99518473 0.00000000 -0.09801714 -0.99518473 0.00000000 -0.29028468 -0.95694034 0.00000000 -0.47139674 -0.88192126 0.00000000 -0.63439328 -0.77301045 0.00000000 -0.77301045 -0.63439328 0.00000000 -0.88192126 -0.47139674 0.00000000 -0.95694034 -0.29028468 0.00000000 -0.99518473 -0.09801714 0.00000000 -0.99518473 0.09801714 0.00000000 -0.95694034 0.29028468 0.00000000 -0.88192126 0.47139674 0.00000000 -0.77301045 0.63439328 0.00000000 -0.63439328 0.77301045 0.00000000 -0.47139674 0.88192126 0.00000000 -0.29028468 0.95694034 0.00000000 -0.09801714 0.99518473 ) \begintext NPD1 Sensor Layout The NPD1's 90.0 x 9.0 degrees aperture is split into 3 sectors that are 30 degrees apart. Each sector's aperture is 30.0 x 9.0 degrees. The "view direction" of each sector is outwards, from center of the aperture through the sector position. The view direction of sector "1" is along the MEX_ASPERA_NPD1 frame +Z axis. This diagram illustrates NPD1 sector layout: +Znpd1 +Ynpd1 S# indicate the sector "#" <. V0 .> position in the `. ..... .' assembly. V1. .' S0 . .' .`. . .' V# indicate the sector "#" . S1 . .' view direction. V2 . `. . .' . S2 `...' For example, for ...........o Sector "1" the view +Xnpd1 direction is the vector emanating from the aperture center through the point designated by "V1". These keywords contains NPD1 sector parameters: \begindata INS-41141_NUMBER_OF_SECTORS = ( 3, 1 ) INS-41141_SECTOR_SIZE = ( 30.0, 9.0 ) INS-41141_FRAME = 'MEX_ASPERA_NPD1' INS-41141_SECTOR_DIRECTIONS = ( 0.00000000 0.50000000 0.86602540 0.00000000 0.00000000 1.00000000 0.00000000 -0.50000000 0.86602540 ) \begintext NPD2 Sensor Layout The NPD2's 90.0 x 9.0 degrees aperture is split into 3 sectors that are 30 degrees apart. Each sector's aperture is 30.0 x 9.0 degrees. The "view direction" of each sector is outwards, from center of the aperture through the sector position. The view direction of sector "1" is along the MEX_ASPERA_NPD2 frame +Z axis. This diagram illustrates NPD2 sector layout: +Znpd2 S# indicate the sector "#" V0 .> position in the ..... .' assembly. . S0 `. .V1 . .'. V# indicate the sector "#" . S1 . view direction. . .' . V2 ..' S2 . For example, for o........... Sector "1" the view +Xnpd2 `. direction is the vector `. emanating from the `. aperture center through `. the point designated `. by "V1". `> +Ynpd2 These keywords contains NPD2 sector parameters: \begindata INS-41142_NUMBER_OF_SECTORS = ( 3, 1 ) INS-41142_SECTOR_SIZE = ( 30.0, 9.0 ) INS-41142_FRAME = 'MEX_ASPERA_NPD2' INS-41142_SECTOR_DIRECTIONS = ( 0.00000000 -0.50000000 0.86602540 0.00000000 0.00000000 1.00000000 0.00000000 0.50000000 0.86602540 ) \begintext SS1 Sensor Layout The SS1 has a single 90 x 2 degrees FOV centered around +Y axis of the MEX_ASPERA_SS1 frame. This whole FOV is assumed to be the SS1's only sector. This diagram illustrates SS1 sector layout: ^ +Zsaf | +Zss1 ^ | ' ..\.|....' .' \| '`. .' | ' `. .-> +Yss1 . |\ ' .-' . | \' .-' . . | o'+Xss1 . . o---''--..-----> +Ysaf . +Xsaf ''--.. . . . . . . `. .' ` ......... ' These keywords contains SS1 sector parameters: \begindata INS-41161_NUMBER_OF_SECTORS = ( 1, 1 ) INS-41161_SECTOR_SIZE = ( 90.0, 2.0 ) INS-41161_FRAME = 'MEX_ASPERA_SS1' INS-41161_SECTOR_DIRECTIONS = ( 0.00000000 1.00000000 0.00000000 ) \begintext These keywords contains formal SS1 FOV definition consistent with the GETFOV/getfov_c interfaces: \begindata INS-41161_FOV_FRAME = 'MEX_ASPERA_SS1' INS-41161_FOV_SHAPE = 'RECTANGLE' INS-41161_BORESIGHT = ( 0.00000000 1.00000000 0.00000000 ) INS-41161_FOV_CLASS_SPEC = 'ANGLES' INS-41161_FOV_REF_VECTOR = ( 0.00000000 0.00000000 1.00000000 ) INS-41161_FOV_REF_ANGLE = ( 45.0 ) INS-41161_FOV_CROSS_ANGLE = ( 1.0 ) INS-41161_FOV_ANGLE_UNITS = 'DEGREES' \begintext SS2 Sensor Layout The SS2 has a single 90 x 2 degrees FOV centered around +Y axis of the MEX_ASPERA_SS2 frame. This whole FOV is assumed to be the SS2's only sector. This diagram illustrates SS2 sector layout: ^ +Zsaf | ' | ^ +Zss2 '....|./.. .'' |/ `. +Yss2 <-. .' ' | `. V0`-. ' /| . .S0 `-. '/ | . . `x | . . ..--'' o--------------> +Ysaf --'' +Xss2 +Xsaf . . . . . . . `. .' ` ......... ' These keywords contains SS2 sector parameters: \begindata INS-41162_NUMBER_OF_SECTORS = ( 1, 1 ) INS-41162_SECTOR_SIZE = ( 90.0, 2.0 ) INS-41162_FRAME = 'MEX_ASPERA_SS2' INS-41162_SECTOR_DIRECTIONS = ( 0.00000000 1.00000000 0.00000000 ) \begintext These keywords contains formal SS2 FOV definition consistent with the GETFOV/getfov_c interfaces: \begindata INS-41162_FOV_FRAME = 'MEX_ASPERA_SS2' INS-41162_FOV_SHAPE = 'RECTANGLE' INS-41162_BORESIGHT = ( 0.00000000 1.00000000 0.00000000 ) INS-41162_FOV_CLASS_SPEC = 'ANGLES' INS-41162_FOV_REF_VECTOR = ( 0.00000000 0.00000000 1.00000000 ) INS-41162_FOV_REF_ANGLE = ( 45.0 ) INS-41162_FOV_CROSS_ANGLE = ( 1.0 ) INS-41162_FOV_ANGLE_UNITS = 'DEGREES' \begintext IMA Sensor Layout The IMA's 360.0 x 90.0 degrees aperture is split into 256 sectors -- 16 in-plane (azimuthal) by 16 cross-plane (polar) -- 22.5 x 5.625 degrees each. The sector view directions are equally spaced in in-plane and cross-plane directions. The "view direction" of each sector is inwards, from the sector position through the center of the aperture. In both dimensions -- in-plane and cross-plane -- the sectors are numbered from "0" to "15". In-plane, the boundary between azimuthal sectors "0" and "1" is coincident with the IMA frame's -Y axis/IMAS frame's -X axis, from which the sectors are counted CCW as seen from the tip of IMA frame's +X axis/IMAS frame's +Z axis. Cross plane, the polar sector "0" "layer" is closest to the IMA frame's -X axis/IMAS frame's -Z axis and the polar sector "15" "layer" is closest to the IMA frame's +X axis/IMAS frame's +Z axis. This diagram illustrates in-plane (azimuthal) IMA sector layout: +Yimas ^ +Zima | A# indicate the azimuthal V5 | V4 sector "#" position in V6 ....|.... V3 the sensor assembly. .' A13 | A12 `. V7 .' A14 | A11`. V2 V# indicate the "#" sector . A15 | A10. view direction. V8 . | . V1 .A0 | A9. +Ximas For example, for . o--------------> +Yima Sector "11" the view .A1 / +Zimas A8. direction is the vector V9 . / +Xima . V0 emanating from the .A2 / A7. aperture center through V10 . / A6 . V15 the point designated `. / A4 A5 .' by "V11". V11 ......... ' V14 / V12 V13 V Azimuthal sector "11" view direction This diagram illustrates cross-plane (polar) IMA sector layout: +Yimas +Zima Polar Sector "3" ^ ^ view dir. A# indicate the polar V8 | V7 / sector "#" position in .----|----. V3 the sensor assembly. V15 ,-' P8|P7 `/. V0 .' | P3 `. `.P15 | / P0.' V# indicate the "#" sector `. | / .' view direction. `. | / .' `. | / .' For example, for polar `. |/+Ximas Sector "3" the view <-------------`o'+Yima direction is the vector +Zimas .' `. emanating from the +Xima .' `. aperture center through .' `. the point designated .' `. by "V2". .'P15 P0`. `. .' V15 `-. P8 P7 ,-' V0 `---------' V8 V7 As seen on the diagrams and pointed out in the text above the sector view direction can be defined in either IMA frame (MEX_ASPERA_IMA) or IMAS frame (MEX_ASPERA_IMAS). Originally only the IMA frame was defined in the MEX FK; the IMAS frame was added later for the reasons explained by Rudy Frahm (see [6]): The IMAS Frame -------------- The IMA frame is very useful in describing how data is related to the ASPERA instruments which are mounted on the scanner; however, it does not describe data in the frame of the instrument well. Due to the way that the IMA is designed, built, and operates, the sensor head of the IMA has a natural spherical coordinate system associated with its orientation. This spherical system best describes the way that IMA collects data. It s advantageous to organize data into the frame of the Sensor head for this purpose. This frame is called the IMAS, for IMA Sensor head. The IMAS frame is organized such that the +Z-imas points along the +X-ima axis, the +X-imas axis points along the +Y-ima axis, and the +Y-ima axis points along the +Z-ima axis. The IMAS system naturally produces the IMA polar angle directed opposite to the spherical polar angle of the IMAS frame and the IMA azimuthal angle in the same direction (with an offset) as the IMAS frame azimuthal angle. The difference between the IMA and IMAS frames is subtle. It involves spherical representation and the way in which the IMA operates. The IMA operates by taking data in a spherical system. Its pixels are similar to a bent trapezoid. the shape of this trapezoid has its parallel sides in an X-IMAS -- Y-IMAS plane. The non-parallel sides to the trapezoid lie along a meridian plane on the sensor head (Z-imas) axis. It is extremely difficult to describe the same meridian line from the IMAS frame using the IMA frame because every point is described by a unique set of IMA frame coordinate values. In a sense, the IMA frame requires describing a field-of-view which is at odd angles and each IMA pixel requires a unique description. The IMA frame can not easily describe the IMA pixel trapezoid because there is no spherical coordinate in the ima frame which aligns with any edge or side of the trapezoid. Thus, the IMAS frame is better oriented for describing objects within the IMA. Since the IMA frame was the only frame defined for the sensor in the earlier versions of the FK, the earlier IK contained just keywords specifying IMA sector layout with respect to it. When the IMAS frame was added, instead of re-defining all IMA parameters with respect to it (which would make the IK backward incompatible), a new, second set of definitions for the same sectors but relative to the IMAS frame was added. Thus, the two blocks of keywords below contain the same IMA sector parameters, except that in the first block they are defined relative to the MEX_ASPERA_IMA frame and are ``tagged'' with instrument ID -41151 while in the second block they are defined relative to the MEX_ASPERA_IMAS frame and are ``tagged'' with instrument ID -41152. In each block the sector directions are listed plane-by-plane, i.e. the first 16 vectors in the array are for azimuthal sectors "0" through "15" in polar plane "0". \begindata INS-41151_NUMBER_OF_SECTORS = ( 16, 16 ) INS-41151_SECTOR_SIZE = ( 22.5, 5.625 ) INS-41151_FRAME = 'MEX_ASPERA_IMA' INS-41151_SECTOR_DIRECTIONS = ( -0.67155895 0.72671396 -0.14455239 -0.67155895 0.72671396 0.14455239 -0.67155895 0.61607834 0.41165039 -0.67155895 0.41165039 0.61607834 -0.67155895 0.14455239 0.72671396 -0.67155895 -0.14455239 0.72671396 -0.67155895 -0.41165039 0.61607834 -0.67155895 -0.61607834 0.41165039 -0.67155895 -0.72671396 0.14455239 -0.67155895 -0.72671396 -0.14455239 -0.67155895 -0.61607834 -0.41165039 -0.67155895 -0.41165039 -0.61607834 -0.67155895 -0.14455239 -0.72671396 -0.67155895 0.14455239 -0.72671396 -0.67155895 0.41165039 -0.61607834 -0.67155895 0.61607834 -0.41165039 -0.59569930 0.78777412 -0.15669802 -0.59569930 0.78777412 0.15669802 -0.59569930 0.66784265 0.44623820 -0.59569930 0.44623820 0.66784265 -0.59569930 0.15669802 0.78777412 -0.59569930 -0.15669802 0.78777412 -0.59569930 -0.44623820 0.66784265 -0.59569930 -0.66784265 0.44623820 -0.59569930 -0.78777412 0.15669802 -0.59569930 -0.78777412 -0.15669802 -0.59569930 -0.66784265 -0.44623820 -0.59569930 -0.44623820 -0.66784265 -0.59569930 -0.15669802 -0.78777412 -0.59569930 0.15669802 -0.78777412 -0.59569930 0.44623820 -0.66784265 -0.59569930 0.66784265 -0.44623820 -0.51410274 0.84124760 -0.16733455 -0.51410274 0.84124760 0.16733455 -0.51410274 0.71317527 0.47652848 -0.51410274 0.47652848 0.71317527 -0.51410274 0.16733455 0.84124760 -0.51410274 -0.16733455 0.84124760 -0.51410274 -0.47652848 0.71317527 -0.51410274 -0.71317527 0.47652848 -0.51410274 -0.84124760 0.16733455 -0.51410274 -0.84124760 -0.16733455 -0.51410274 -0.71317527 -0.47652848 -0.51410274 -0.47652848 -0.71317527 -0.51410274 -0.16733455 -0.84124760 -0.51410274 0.16733455 -0.84124760 -0.51410274 0.47652848 -0.71317527 -0.51410274 0.71317527 -0.47652848 -0.42755509 0.88661939 -0.17635956 -0.42755509 0.88661939 0.17635956 -0.42755509 0.75163963 0.50222954 -0.42755509 0.50222954 0.75163963 -0.42755509 0.17635956 0.88661939 -0.42755509 -0.17635956 0.88661939 -0.42755509 -0.50222954 0.75163963 -0.42755509 -0.75163963 0.50222954 -0.42755509 -0.88661939 0.17635956 -0.42755509 -0.88661939 -0.17635956 -0.42755509 -0.75163963 -0.50222954 -0.42755509 -0.50222954 -0.75163963 -0.42755509 -0.17635956 -0.88661939 -0.42755509 0.17635956 -0.88661939 -0.42755509 0.50222954 -0.75163963 -0.42755509 0.75163963 -0.50222954 -0.33688985 0.92345256 -0.18368613 -0.33688985 0.92345256 0.18368613 -0.33688985 0.78286528 0.52309386 -0.33688985 0.52309386 0.78286528 -0.33688985 0.18368613 0.92345256 -0.33688985 -0.18368613 0.92345256 -0.33688985 -0.52309386 0.78286528 -0.33688985 -0.78286528 0.52309386 -0.33688985 -0.92345256 0.18368613 -0.33688985 -0.92345256 -0.18368613 -0.33688985 -0.78286528 -0.52309386 -0.33688985 -0.52309386 -0.78286528 -0.33688985 -0.18368613 -0.92345256 -0.33688985 0.18368613 -0.92345256 -0.33688985 0.52309386 -0.78286528 -0.33688985 0.78286528 -0.52309386 -0.24298018 0.95139237 -0.18924371 -0.24298018 0.95139237 0.18924371 -0.24298018 0.80655151 0.53892049 -0.24298018 0.53892049 0.80655151 -0.24298018 0.18924371 0.95139237 -0.24298018 -0.18924371 0.95139237 -0.24298018 -0.53892049 0.80655151 -0.24298018 -0.80655151 0.53892049 -0.24298018 -0.95139237 0.18924371 -0.24298018 -0.95139237 -0.18924371 -0.24298018 -0.80655151 -0.53892049 -0.24298018 -0.53892049 -0.80655151 -0.24298018 -0.18924371 -0.95139237 -0.24298018 0.18924371 -0.95139237 -0.24298018 0.53892049 -0.80655151 -0.24298018 0.80655151 -0.53892049 -0.14673047 0.97016976 -0.19297876 -0.14673047 0.97016976 0.19297876 -0.14673047 0.82247021 0.54955702 -0.14673047 0.54955702 0.82247021 -0.14673047 0.19297876 0.97016976 -0.14673047 -0.19297876 0.97016976 -0.14673047 -0.54955702 0.82247021 -0.14673047 -0.82247021 0.54955702 -0.14673047 -0.97016976 0.19297876 -0.14673047 -0.97016976 -0.19297876 -0.14673047 -0.82247021 -0.54955702 -0.14673047 -0.54955702 -0.82247021 -0.14673047 -0.19297876 -0.97016976 -0.14673047 0.19297876 -0.97016976 -0.14673047 0.54955702 -0.82247021 -0.14673047 0.82247021 -0.54955702 -0.04906767 0.97960388 -0.19485533 -0.04906767 0.97960388 0.19485533 -0.04906767 0.83046807 0.55490102 -0.04906767 0.55490102 0.83046807 -0.04906767 0.19485533 0.97960388 -0.04906767 -0.19485533 0.97960388 -0.04906767 -0.55490102 0.83046807 -0.04906767 -0.83046807 0.55490102 -0.04906767 -0.97960388 0.19485533 -0.04906767 -0.97960388 -0.19485533 -0.04906767 -0.83046807 -0.55490102 -0.04906767 -0.55490102 -0.83046807 -0.04906767 -0.19485533 -0.97960388 -0.04906767 0.19485533 -0.97960388 -0.04906767 0.55490102 -0.83046807 -0.04906767 0.83046807 -0.55490102 0.04906767 0.97960388 -0.19485533 0.04906767 0.97960388 0.19485533 0.04906767 0.83046807 0.55490102 0.04906767 0.55490102 0.83046807 0.04906767 0.19485533 0.97960388 0.04906767 -0.19485533 0.97960388 0.04906767 -0.55490102 0.83046807 0.04906767 -0.83046807 0.55490102 0.04906767 -0.97960388 0.19485533 0.04906767 -0.97960388 -0.19485533 0.04906767 -0.83046807 -0.55490102 0.04906767 -0.55490102 -0.83046807 0.04906767 -0.19485533 -0.97960388 0.04906767 0.19485533 -0.97960388 0.04906767 0.55490102 -0.83046807 0.04906767 0.83046807 -0.55490102 0.14673047 0.97016976 -0.19297876 0.14673047 0.97016976 0.19297876 0.14673047 0.82247021 0.54955702 0.14673047 0.54955702 0.82247021 0.14673047 0.19297876 0.97016976 0.14673047 -0.19297876 0.97016976 0.14673047 -0.54955702 0.82247021 0.14673047 -0.82247021 0.54955702 0.14673047 -0.97016976 0.19297876 0.14673047 -0.97016976 -0.19297876 0.14673047 -0.82247021 -0.54955702 0.14673047 -0.54955702 -0.82247021 0.14673047 -0.19297876 -0.97016976 0.14673047 0.19297876 -0.97016976 0.14673047 0.54955702 -0.82247021 0.14673047 0.82247021 -0.54955702 0.24298018 0.95139237 -0.18924371 0.24298018 0.95139237 0.18924371 0.24298018 0.80655151 0.53892049 0.24298018 0.53892049 0.80655151 0.24298018 0.18924371 0.95139237 0.24298018 -0.18924371 0.95139237 0.24298018 -0.53892049 0.80655151 0.24298018 -0.80655151 0.53892049 0.24298018 -0.95139237 0.18924371 0.24298018 -0.95139237 -0.18924371 0.24298018 -0.80655151 -0.53892049 0.24298018 -0.53892049 -0.80655151 0.24298018 -0.18924371 -0.95139237 0.24298018 0.18924371 -0.95139237 0.24298018 0.53892049 -0.80655151 0.24298018 0.80655151 -0.53892049 0.33688985 0.92345256 -0.18368613 0.33688985 0.92345256 0.18368613 0.33688985 0.78286528 0.52309386 0.33688985 0.52309386 0.78286528 0.33688985 0.18368613 0.92345256 0.33688985 -0.18368613 0.92345256 0.33688985 -0.52309386 0.78286528 0.33688985 -0.78286528 0.52309386 0.33688985 -0.92345256 0.18368613 0.33688985 -0.92345256 -0.18368613 0.33688985 -0.78286528 -0.52309386 0.33688985 -0.52309386 -0.78286528 0.33688985 -0.18368613 -0.92345256 0.33688985 0.18368613 -0.92345256 0.33688985 0.52309386 -0.78286528 0.33688985 0.78286528 -0.52309386 0.42755509 0.88661939 -0.17635956 0.42755509 0.88661939 0.17635956 0.42755509 0.75163963 0.50222954 0.42755509 0.50222954 0.75163963 0.42755509 0.17635956 0.88661939 0.42755509 -0.17635956 0.88661939 0.42755509 -0.50222954 0.75163963 0.42755509 -0.75163963 0.50222954 0.42755509 -0.88661939 0.17635956 0.42755509 -0.88661939 -0.17635956 0.42755509 -0.75163963 -0.50222954 0.42755509 -0.50222954 -0.75163963 0.42755509 -0.17635956 -0.88661939 0.42755509 0.17635956 -0.88661939 0.42755509 0.50222954 -0.75163963 0.42755509 0.75163963 -0.50222954 0.51410274 0.84124760 -0.16733455 0.51410274 0.84124760 0.16733455 0.51410274 0.71317527 0.47652848 0.51410274 0.47652848 0.71317527 0.51410274 0.16733455 0.84124760 0.51410274 -0.16733455 0.84124760 0.51410274 -0.47652848 0.71317527 0.51410274 -0.71317527 0.47652848 0.51410274 -0.84124760 0.16733455 0.51410274 -0.84124760 -0.16733455 0.51410274 -0.71317527 -0.47652848 0.51410274 -0.47652848 -0.71317527 0.51410274 -0.16733455 -0.84124760 0.51410274 0.16733455 -0.84124760 0.51410274 0.47652848 -0.71317527 0.51410274 0.71317527 -0.47652848 0.59569930 0.78777412 -0.15669802 0.59569930 0.78777412 0.15669802 0.59569930 0.66784265 0.44623820 0.59569930 0.44623820 0.66784265 0.59569930 0.15669802 0.78777412 0.59569930 -0.15669802 0.78777412 0.59569930 -0.44623820 0.66784265 0.59569930 -0.66784265 0.44623820 0.59569930 -0.78777412 0.15669802 0.59569930 -0.78777412 -0.15669802 0.59569930 -0.66784265 -0.44623820 0.59569930 -0.44623820 -0.66784265 0.59569930 -0.15669802 -0.78777412 0.59569930 0.15669802 -0.78777412 0.59569930 0.44623820 -0.66784265 0.59569930 0.66784265 -0.44623820 0.67155895 0.72671396 -0.14455239 0.67155895 0.72671396 0.14455239 0.67155895 0.61607834 0.41165039 0.67155895 0.41165039 0.61607834 0.67155895 0.14455239 0.72671396 0.67155895 -0.14455239 0.72671396 0.67155895 -0.41165039 0.61607834 0.67155895 -0.61607834 0.41165039 0.67155895 -0.72671396 0.14455239 0.67155895 -0.72671396 -0.14455239 0.67155895 -0.61607834 -0.41165039 0.67155895 -0.41165039 -0.61607834 0.67155895 -0.14455239 -0.72671396 0.67155895 0.14455239 -0.72671396 0.67155895 0.41165039 -0.61607834 0.67155895 0.61607834 -0.41165039 ) INS-41152_NUMBER_OF_SECTORS = ( 16, 16 ) INS-41152_SECTOR_SIZE = ( 22.5, 5.625 ) INS-41152_FRAME = 'MEX_ASPERA_IMAS' INS-41152_SECTOR_DIRECTIONS = ( 0.72671396 -0.14455239 -0.67155895 0.72671396 0.14455239 -0.67155895 0.61607834 0.41165039 -0.67155895 0.41165039 0.61607834 -0.67155895 0.14455239 0.72671396 -0.67155895 -0.14455239 0.72671396 -0.67155895 -0.41165039 0.61607834 -0.67155895 -0.61607834 0.41165039 -0.67155895 -0.72671396 0.14455239 -0.67155895 -0.72671396 -0.14455239 -0.67155895 -0.61607834 -0.41165039 -0.67155895 -0.41165039 -0.61607834 -0.67155895 -0.14455239 -0.72671396 -0.67155895 0.14455239 -0.72671396 -0.67155895 0.41165039 -0.61607834 -0.67155895 0.61607834 -0.41165039 -0.67155895 0.78777412 -0.15669802 -0.59569930 0.78777412 0.15669802 -0.59569930 0.66784265 0.44623820 -0.59569930 0.44623820 0.66784265 -0.59569930 0.15669802 0.78777412 -0.59569930 -0.15669802 0.78777412 -0.59569930 -0.44623820 0.66784265 -0.59569930 -0.66784265 0.44623820 -0.59569930 -0.78777412 0.15669802 -0.59569930 -0.78777412 -0.15669802 -0.59569930 -0.66784265 -0.44623820 -0.59569930 -0.44623820 -0.66784265 -0.59569930 -0.15669802 -0.78777412 -0.59569930 0.15669802 -0.78777412 -0.59569930 0.44623820 -0.66784265 -0.59569930 0.66784265 -0.44623820 -0.59569930 0.84124760 -0.16733455 -0.51410274 0.84124760 0.16733455 -0.51410274 0.71317527 0.47652848 -0.51410274 0.47652848 0.71317527 -0.51410274 0.16733455 0.84124760 -0.51410274 -0.16733455 0.84124760 -0.51410274 -0.47652848 0.71317527 -0.51410274 -0.71317527 0.47652848 -0.51410274 -0.84124760 0.16733455 -0.51410274 -0.84124760 -0.16733455 -0.51410274 -0.71317527 -0.47652848 -0.51410274 -0.47652848 -0.71317527 -0.51410274 -0.16733455 -0.84124760 -0.51410274 0.16733455 -0.84124760 -0.51410274 0.47652848 -0.71317527 -0.51410274 0.71317527 -0.47652848 -0.51410274 0.88661939 -0.17635956 -0.42755509 0.88661939 0.17635956 -0.42755509 0.75163963 0.50222954 -0.42755509 0.50222954 0.75163963 -0.42755509 0.17635956 0.88661939 -0.42755509 -0.17635956 0.88661939 -0.42755509 -0.50222954 0.75163963 -0.42755509 -0.75163963 0.50222954 -0.42755509 -0.88661939 0.17635956 -0.42755509 -0.88661939 -0.17635956 -0.42755509 -0.75163963 -0.50222954 -0.42755509 -0.50222954 -0.75163963 -0.42755509 -0.17635956 -0.88661939 -0.42755509 0.17635956 -0.88661939 -0.42755509 0.50222954 -0.75163963 -0.42755509 0.75163963 -0.50222954 -0.42755509 0.92345256 -0.18368613 -0.33688985 0.92345256 0.18368613 -0.33688985 0.78286528 0.52309386 -0.33688985 0.52309386 0.78286528 -0.33688985 0.18368613 0.92345256 -0.33688985 -0.18368613 0.92345256 -0.33688985 -0.52309386 0.78286528 -0.33688985 -0.78286528 0.52309386 -0.33688985 -0.92345256 0.18368613 -0.33688985 -0.92345256 -0.18368613 -0.33688985 -0.78286528 -0.52309386 -0.33688985 -0.52309386 -0.78286528 -0.33688985 -0.18368613 -0.92345256 -0.33688985 0.18368613 -0.92345256 -0.33688985 0.52309386 -0.78286528 -0.33688985 0.78286528 -0.52309386 -0.33688985 0.95139237 -0.18924371 -0.24298018 0.95139237 0.18924371 -0.24298018 0.80655151 0.53892049 -0.24298018 0.53892049 0.80655151 -0.24298018 0.18924371 0.95139237 -0.24298018 -0.18924371 0.95139237 -0.24298018 -0.53892049 0.80655151 -0.24298018 -0.80655151 0.53892049 -0.24298018 -0.95139237 0.18924371 -0.24298018 -0.95139237 -0.18924371 -0.24298018 -0.80655151 -0.53892049 -0.24298018 -0.53892049 -0.80655151 -0.24298018 -0.18924371 -0.95139237 -0.24298018 0.18924371 -0.95139237 -0.24298018 0.53892049 -0.80655151 -0.24298018 0.80655151 -0.53892049 -0.24298018 0.97016976 -0.19297876 -0.14673047 0.97016976 0.19297876 -0.14673047 0.82247021 0.54955702 -0.14673047 0.54955702 0.82247021 -0.14673047 0.19297876 0.97016976 -0.14673047 -0.19297876 0.97016976 -0.14673047 -0.54955702 0.82247021 -0.14673047 -0.82247021 0.54955702 -0.14673047 -0.97016976 0.19297876 -0.14673047 -0.97016976 -0.19297876 -0.14673047 -0.82247021 -0.54955702 -0.14673047 -0.54955702 -0.82247021 -0.14673047 -0.19297876 -0.97016976 -0.14673047 0.19297876 -0.97016976 -0.14673047 0.54955702 -0.82247021 -0.14673047 0.82247021 -0.54955702 -0.14673047 0.97960388 -0.19485533 -0.04906767 0.97960388 0.19485533 -0.04906767 0.83046807 0.55490102 -0.04906767 0.55490102 0.83046807 -0.04906767 0.19485533 0.97960388 -0.04906767 -0.19485533 0.97960388 -0.04906767 -0.55490102 0.83046807 -0.04906767 -0.83046807 0.55490102 -0.04906767 -0.97960388 0.19485533 -0.04906767 -0.97960388 -0.19485533 -0.04906767 -0.83046807 -0.55490102 -0.04906767 -0.55490102 -0.83046807 -0.04906767 -0.19485533 -0.97960388 -0.04906767 0.19485533 -0.97960388 -0.04906767 0.55490102 -0.83046807 -0.04906767 0.83046807 -0.55490102 -0.04906767 0.97960388 -0.19485533 0.04906767 0.97960388 0.19485533 0.04906767 0.83046807 0.55490102 0.04906767 0.55490102 0.83046807 0.04906767 0.19485533 0.97960388 0.04906767 -0.19485533 0.97960388 0.04906767 -0.55490102 0.83046807 0.04906767 -0.83046807 0.55490102 0.04906767 -0.97960388 0.19485533 0.04906767 -0.97960388 -0.19485533 0.04906767 -0.83046807 -0.55490102 0.04906767 -0.55490102 -0.83046807 0.04906767 -0.19485533 -0.97960388 0.04906767 0.19485533 -0.97960388 0.04906767 0.55490102 -0.83046807 0.04906767 0.83046807 -0.55490102 0.04906767 0.97016976 -0.19297876 0.14673047 0.97016976 0.19297876 0.14673047 0.82247021 0.54955702 0.14673047 0.54955702 0.82247021 0.14673047 0.19297876 0.97016976 0.14673047 -0.19297876 0.97016976 0.14673047 -0.54955702 0.82247021 0.14673047 -0.82247021 0.54955702 0.14673047 -0.97016976 0.19297876 0.14673047 -0.97016976 -0.19297876 0.14673047 -0.82247021 -0.54955702 0.14673047 -0.54955702 -0.82247021 0.14673047 -0.19297876 -0.97016976 0.14673047 0.19297876 -0.97016976 0.14673047 0.54955702 -0.82247021 0.14673047 0.82247021 -0.54955702 0.14673047 0.95139237 -0.18924371 0.24298018 0.95139237 0.18924371 0.24298018 0.80655151 0.53892049 0.24298018 0.53892049 0.80655151 0.24298018 0.18924371 0.95139237 0.24298018 -0.18924371 0.95139237 0.24298018 -0.53892049 0.80655151 0.24298018 -0.80655151 0.53892049 0.24298018 -0.95139237 0.18924371 0.24298018 -0.95139237 -0.18924371 0.24298018 -0.80655151 -0.53892049 0.24298018 -0.53892049 -0.80655151 0.24298018 -0.18924371 -0.95139237 0.24298018 0.18924371 -0.95139237 0.24298018 0.53892049 -0.80655151 0.24298018 0.80655151 -0.53892049 0.24298018 0.92345256 -0.18368613 0.33688985 0.92345256 0.18368613 0.33688985 0.78286528 0.52309386 0.33688985 0.52309386 0.78286528 0.33688985 0.18368613 0.92345256 0.33688985 -0.18368613 0.92345256 0.33688985 -0.52309386 0.78286528 0.33688985 -0.78286528 0.52309386 0.33688985 -0.92345256 0.18368613 0.33688985 -0.92345256 -0.18368613 0.33688985 -0.78286528 -0.52309386 0.33688985 -0.52309386 -0.78286528 0.33688985 -0.18368613 -0.92345256 0.33688985 0.18368613 -0.92345256 0.33688985 0.52309386 -0.78286528 0.33688985 0.78286528 -0.52309386 0.33688985 0.88661939 -0.17635956 0.42755509 0.88661939 0.17635956 0.42755509 0.75163963 0.50222954 0.42755509 0.50222954 0.75163963 0.42755509 0.17635956 0.88661939 0.42755509 -0.17635956 0.88661939 0.42755509 -0.50222954 0.75163963 0.42755509 -0.75163963 0.50222954 0.42755509 -0.88661939 0.17635956 0.42755509 -0.88661939 -0.17635956 0.42755509 -0.75163963 -0.50222954 0.42755509 -0.50222954 -0.75163963 0.42755509 -0.17635956 -0.88661939 0.42755509 0.17635956 -0.88661939 0.42755509 0.50222954 -0.75163963 0.42755509 0.75163963 -0.50222954 0.42755509 0.84124760 -0.16733455 0.51410274 0.84124760 0.16733455 0.51410274 0.71317527 0.47652848 0.51410274 0.47652848 0.71317527 0.51410274 0.16733455 0.84124760 0.51410274 -0.16733455 0.84124760 0.51410274 -0.47652848 0.71317527 0.51410274 -0.71317527 0.47652848 0.51410274 -0.84124760 0.16733455 0.51410274 -0.84124760 -0.16733455 0.51410274 -0.71317527 -0.47652848 0.51410274 -0.47652848 -0.71317527 0.51410274 -0.16733455 -0.84124760 0.51410274 0.16733455 -0.84124760 0.51410274 0.47652848 -0.71317527 0.51410274 0.71317527 -0.47652848 0.51410274 0.78777412 -0.15669802 0.59569930 0.78777412 0.15669802 0.59569930 0.66784265 0.44623820 0.59569930 0.44623820 0.66784265 0.59569930 0.15669802 0.78777412 0.59569930 -0.15669802 0.78777412 0.59569930 -0.44623820 0.66784265 0.59569930 -0.66784265 0.44623820 0.59569930 -0.78777412 0.15669802 0.59569930 -0.78777412 -0.15669802 0.59569930 -0.66784265 -0.44623820 0.59569930 -0.44623820 -0.66784265 0.59569930 -0.15669802 -0.78777412 0.59569930 0.15669802 -0.78777412 0.59569930 0.44623820 -0.66784265 0.59569930 0.66784265 -0.44623820 0.59569930 0.72671396 -0.14455239 0.67155895 0.72671396 0.14455239 0.67155895 0.61607834 0.41165039 0.67155895 0.41165039 0.61607834 0.67155895 0.14455239 0.72671396 0.67155895 -0.14455239 0.72671396 0.67155895 -0.41165039 0.61607834 0.67155895 -0.61607834 0.41165039 0.67155895 -0.72671396 0.14455239 0.67155895 -0.72671396 -0.14455239 0.67155895 -0.61607834 -0.41165039 0.67155895 -0.41165039 -0.61607834 0.67155895 -0.14455239 -0.72671396 0.67155895 0.14455239 -0.72671396 0.67155895 0.41165039 -0.61607834 0.67155895 0.61607834 -0.41165039 0.67155895 ) \begintext Platform ID --------------------------------------------------------------------------- This number is the NAIF instrument ID of the platform on which the different parts of the instrument are mounted. IMA is mounted on the IMA base while the other four sensors -- NPI, NPD1, NPD2, and ELS -- are attached to the scanner. \begindata INS-41120_PLATFORM_ID = ( -41111 ) INS-41130_PLATFORM_ID = ( -41111 ) INS-41141_PLATFORM_ID = ( -41111 ) INS-41142_PLATFORM_ID = ( -41111 ) INS-41151_PLATFORM_ID = ( -41150 ) INS-41152_PLATFORM_ID = ( -41150 ) \begintext IK Code Example --------------------------------------------------------------------------- This section contains an example code, in C and FORTRAN, illustrating how geometry parameters for a given sensor can be retrieved using appropriate SPICE routine. Both examples are presented as stand-alone functions with SPICE-style header, ready to be cut-n-paste and called from an application. C Example /* -Procedure getik ( Get ASPERA IK Data ) -Abstract Return IK data for a given ASPERA sensor. -Required_Reading KERNEL Required Reading (kernel.req) Latest ASPERA IK File (mex_aspera_vXX.ti -- version 5 or higher) Latest MEX FK File (mex_vXX.tf -- version 8 or higher) */ #include "SpiceUsr.h" #include void getik( ConstSpiceChar * sensor, SpiceChar * sensnm, SpiceInt * sensid, SpiceInt secnum[2], SpiceDouble secsiz[2], SpiceChar * secfrm, SpiceDouble * secdir ) /* -Brief_I/O Variable I/O Description -------- --- -------------------------------------------- sensor I Sensor acronym -- ELS,NPI,NPD1,NPD2,IMA,IMAS,SS1,SS2 sensnm O Full NAIF name of the sensor sensid O NAIF ID of the sensor secnum O Sector grid dimensions (in-plane, cross-plane) secsiz O Sector size, degrees (in-plane, cross-plane) secfrm O Frame in this in-plane view directions are defined secdir O Sector center view directions -Detailed Input N/A. -Detailed Output N/A. -Exceptions 1) If NAIF name <-> ID mapping for MEX instruments provided in the MEX FK file have not been loaded, then the error 'NOIDMAPPINGDATA' is signaled. 2) If any of the expected IK keywords provided in the ASPERA IK file have not been found in the POOL, then the error 'NOIKDATA' is signaled. 3) If not enough space should be provided for the sensnm, secfrm, secdir, then memory violations will occur. -Files MEX FK and ASPERA IK files must be loaded prior to calling this function. -Particulars MEX FK file loaded prior to calling this routine should contain MEX instrument naif <-> ID mappings. ASPERA IK file loaded prior to calling this routine should contain the following keywords for each of the sensors: INS#_NUMBER_OF_SECTORS INS#_SECTOR_SIZE INS#_FRAME INS#_SECTOR_DIRECTIONS -Examples In this example the function gets and prints out IK data for ELS. #include #include "SpiceUsr.h" void getik( ConstSpiceChar * sensor, SpiceChar * sensnm, SpiceInt * sensid, SpiceInt secnum[2], SpiceDouble secsiz[2], SpiceChar * secfrm, SpiceDouble * secdir ); int main( int argc, char * argv[] ) { SpiceChar sensnm [33]; SpiceInt sensid; SpiceInt secnum [2]; SpiceDouble secsiz [2]; SpiceChar secfrm [33]; SpiceDouble secdir [256][3]; SpiceInt i; /. Load MEX FK and ASPERA IK files. ./ furnsh_c( "../../../../fk/mex_v08.tf" ); furnsh_c( "../../../mex_aspera_v05.ti" ); /. Get ELS IK data. ./ getik( "ELS", sensnm, &sensid, secnum, secsiz, secfrm, ( SpiceDouble * ) secdir ); /. Report ELS IK data. ./ printf( "SENSOR NAIF NAME: %s \n", sensnm ); printf( "SENSOR NAIF ID: %ld \n", sensid ); printf( "NUMBER OF SECTORS: %ld %ld \n", secnum[0], secnum[1] ); printf( "SECTOR SIZE: %12.3f %12.3f\n", secsiz[0], secsiz[1] ); printf( "REFERENCE FRAME: %s \n", secfrm ); printf( "SECTOR VIEW DIRECTIONS: \n" ); for ( i = 0; i < secnum[0]*secnum[1]; i++ ) { printf( " %12.9f %12.9f %12.9f\n", secdir[i][0], secdir[i][1], secdir[i][2] ); } return(0); } -Restrictions N/A -Literature_References None. -Author_and_Institution B.V. Semenov (JPL) -Version -getik Version 1.2.0, 2003-NOV-22 (BVS) Updated comments to reflect that it also works for SS1 and SS2. -getik Version 1.1.0, 2003-SEP-10 (BVS) Updated to match corrected FK and IK. -getik Version 1.0.0, 2003-JUL-18 (BVS) Initial version -Index_Entries None. -& */ { /* Begin "get IK data */ SpiceChar ikkwd [33]; SpiceInt n; SpiceBoolean found; /* Since all IK variable names contain NAIF ID of the instrument, the inputs sensor acronym, NNN, needs to be expanded into its full name, MEX_ASPERA_NNN, which then can be uses to find the sensor's NAIF ID code. */ strcpy ( sensnm, "MEX_ASPERA_" ); strcat ( sensnm, sensor ); bodn2c_c ( sensnm, sensid, &found ); if ( ! found ) { setmsg_c ( "Cannot determine NAIF ID for #." ); errch_c ( "#", sensnm ); sigerr_c ( "NOIDMAPPINGDATA" ); } /* Now IK routines can be used to retrieve loaded data. First, retrieve the number of sectors provided in the INS-NNNNNN_NUMBER_OF_SECTORS keyword (here -NNNNNN is the NAIF ID of the sensor.) */ strcpy ( ikkwd, "INS#_NUMBER_OF_SECTORS" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gipool_c ( ikkwd, 0, 2, &n, secnum, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } /* Second, retrieve the sector size provided in the INS-NNNNNN_SECTOR_SIZE keyword. */ strcpy ( ikkwd, "INS#_SECTOR_SIZE" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gdpool_c ( ikkwd, 0, 2, &n, secsiz, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } /* Third, retrieve the frame in which sector view direction are defined. It is provided in the INS-NNNNNN_FRAME keyword. */ strcpy ( ikkwd, "INS#_FRAME" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gcpool_c ( ikkwd, 0, 1, 33, &n, secfrm, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } /* Last, retrieve the sector view directions provided in the INS-NNNNNN_SECTOR_DIRECTIONS keyword. */ strcpy ( ikkwd, "INS#_SECTOR_DIRECTIONS" ); repmi_c ( ikkwd, "#", *sensid, 33, ikkwd ); gdpool_c ( ikkwd, 0, (secnum[0]*secnum[1])*3, &n, secdir, &found ); if ( ! found ) { setmsg_c ( "Loaded IK does not contain #." ); errch_c ( "#", ikkwd ); sigerr_c ( "NOIKDATA" ); } } /* End of "get IK data" */ FORTRAN Example C$Procedure GETIK ( Get ASPERA IK Data ) SUBROUTINE GETIK ( SENSOR, SENSNM, SENSID, SECNUM, . SECSIZ, SECFRM, SECDIR ) C$ Abstract C C Return IK data for a given ASPERA sensor. C C$ Copyright C C Copyright (2003), California Institute of Technology. C U.S. Government sponsorship acknowledged. C C$ Required_Reading C C KERNEL Required Reading (kernel.req) C Latest ASPERA IK File (mex_aspera_vXX.ti -- version 5 or above) C Latest MEX FK File (mex_vXX.tf -- version 8 or above) C C$ Keywords C C KERNEL C UTILITY C C$ Declarations IMPLICIT NONE CHARACTER*(*) SENSOR CHARACTER*(*) SENSNM INTEGER SENSID INTEGER SECNUM ( 2 ) DOUBLE PRECISION SECSIZ ( 2 ) CHARACTER*(*) SECFRM DOUBLE PRECISION SECDIR ( 3, * ) C$ Brief_I/O C C VARIABLE I/O DESCRIPTION C -------- --- -------------------------------------------------- C SENSOR I Sensor acronym -- ELS,NPI,NPD1,NPD2,IMA,IMAS,SS1,SS2 C SENSNM O Full NAIF name of the sensor C SENSID O NAIF ID of the sensor C SECNUM O Sector grid dimensions (in-plane, cross-plane) C SECSIZ O Sector size, degrees (in-plane, cross-plane) C SECFRM O Frame in which view directions are defined C SECDIR O Sector center view directions C C$ Detailed_Input C C SENSOR ASPERA sensor acronym -- ELS, NPI, NPD1, NPD2, IMA, C SS1, or SS2. C C$ Detailed_Output C C SENSNM is the full NAIF name of the sensor indicated by C the input argument SENSOR. For example, the C acronym ELS maps to the full name MEX_ASPERA_ELS. C C SENSID is the NAIF integer ID code of the sensor. The C association of sensor names and codes is established C in the MEX frame kernel. C C SECNUM is an array of two integers giving the sector grid C dimensions (in-plane, cross-plane). C C SECSIZ is an array of two double precision numbers giving C the sector size in degrees (in-plane, cross-plane). C C SECFRM the name of the reference frame in which the view C directions are defined. C C SECDIR is an array of in-plane sector center view direction C vectors. The number of vectors is SECNUM(1)*SECNUM(2) C The Ith vector resides in array elements C C SECDIR(J,I) J = 1, 2, 3 C C$ Parameters C C None. C C$ Files C C MEX FK and ASPERA IK files must be loaded prior to calling this C subroutine. C C$ Exceptions C C 1) If NAIF name <-> ID mapping for MEX instruments provided in C the MEX FK file have not been loaded, then the error C NOIDMAPPINGDATA is signaled. C C 2) If any of the expected IK keywords provided in the ASPERA IK C file have not been found in the POOL, then the error NOIKDATA C is signaled. C C 3) If not enough space should be provided for the arguments C SENSNM, SECFRM, SECDIR, then memory violations will occur. C C$ Particulars C C The MEX FK file loaded prior to calling this routine should C contain MEX instrument <-> NAIF ID mappings. C C ASPERA IK file loaded prior to calling this routine should contain C the following keywords for each of the sensors: C C INS#_NUMBER_OF_SECTORS C INS#_SECTOR_SIZE C INS#_FRAME C INS#_SECTOR_DIRECTIONS C C$ Examples C C C In this example the program gets and prints out IK data for ELS. C C PROGRAM GETIK_EXAMPLE C IMPLICIT NONE C C C INTEGER NSEC C PARAMETER ( NSEC = 32 ) C C INTEGER NAMLEN C PARAMETER ( NAMLEN = 32 ) C C CHARACTER*(NAMLEN) SECFRM C CHARACTER*(NAMLEN) SENSNM C C DOUBLE PRECISION SECDIR ( 3, 256 ) C C INTEGER I C INTEGER J C INTEGER SECNUM ( 2 ) C DOUBLE PRECISION SECSIZ ( 2 ) C INTEGER SENSID C C C C C Load MEX FK and ASPERA IK files. C C C CALL FURNSH ( '../../../../fk/mex_v08.tf' ) C CALL FURNSH ( '../../../mex_aspera_v05.ti' ) C C C C C Get ELS IK data. C C C CALL GETIK( 'ELS', SENSNM, SENSID, SECNUM, C . SECSIZ, SECFRM, SECDIR ) C C C C C Report ELS IK data. C C C WRITE ( *, '(1X,2A )' ) 'SENSOR NAIF NAME: ', SENSNM C WRITE ( *, '(1X,A,I9 )' ) 'SENSOR NAIF ID: ', SENSID C WRITE ( *, '(1X,A,2I5 )' ) 'NUMBER OF SECTORS: ', SECNUM C WRITE ( *, '(1X,A,2F9.3 )' ) 'SECTOR SIZE: ', SECSIZ C WRITE ( *, '(1X,2A )' ) 'REFERENCE FRAME: ', SECFRM C WRITE ( *, '(1X,A )' ) 'SECTOR VIEW DIRECTIONS:' C C DO I = 1, SECNUM(1)*SECNUM(2) C WRITE ( *, '(1X,3F12.9)' ) ( SECDIR(J,I), J = 1, 3 ) C END DO C C END C C C$ Restrictions C C None. C C$ Author_and_Institution C C B.V. Semenov (JPL) C N.J. Bachman (JPL) C C$ Literature_References C C None. C C$ Version C C- GETIK Version 1.2.0, 22-NOV-2003 (BVS) C C Updated comments to reflect that it also works for SS1 C and SS2. C C- GETIK Version 1.1.0, 10-SEP-2003 (BVS) C C Updated to match corrected FK and IK. C C- GETIK Version 1.0.0, 15-AUG-2003 (BVS) (NJB) C C-& C C Local parameters C INTEGER NAMLEN PARAMETER ( NAMLEN = 32 ) C C Local variables C CHARACTER*(NAMLEN) IKKWD INTEGER N LOGICAL FOUND C C Since all IK variable names contain NAIF ID of the instrument, C the input sensor acronym, NNN, needs to be expanded into its C full name, MEX_ASPERA_NNN, which then can be used to find the C sensor's NAIF ID code. C SENSNM = 'MEX_ASPERA_' CALL SUFFIX ( SENSOR, 0, SENSNM ) CALL BODN2C ( SENSNM, SENSID, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Cannot determine NAIF ID for #.' ) CALL ERRCH ( '#', SENSNM ) CALL SIGERR ( 'NOIDMAPPINGDATA' ) RETURN END IF C C Now IK routines can be used to retrieve loaded data. First, C retrieve the number of sectors provided in the C INS-NNNNNN_NUMBER_OF_SECTORS keyword (here -NNNNNN is the NAIF ID C of the sensor.) C IKKWD = 'INS#_NUMBER_OF_SECTORS' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GIPOOL ( IKKWD, 0, 2, N, SECNUM, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF C C Second, retrieve the sector size provided in the C INS-NNNNNN_SECTOR_SIZE keyword. C IKKWD = 'INS#_SECTOR_SIZE' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GDPOOL ( IKKWD, 0, 2, N, SECSIZ, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF C C Third, retrieve the frame in which sector view direction are C defined. It is provided in the INS-NNNNNN_FRAME keyword. C IKKWD = 'INS#_FRAME' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GCPOOL ( IKKWD, 0, 1, N, SECFRM, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF C C Last, retrieve the sector view directions provided in the C INS-NNNNNN_SECTOR_DIRECTIONS keyword. C IKKWD = 'INS#_SECTOR_DIRECTIONS ' CALL REPMI ( IKKWD, '#', SENSID, IKKWD ) CALL GDPOOL ( IKKWD, 0, SECNUM(1)*SECNUM(2)*3, N, SECDIR, FOUND ) IF ( .NOT. FOUND ) THEN CALL SETMSG ( 'Loaded IK does not contain #.' ) CALL ERRCH ( '#', IKKWD ) CALL SIGERR ( 'NOIKDATA' ) RETURN END IF END