NAIF FOV Definition Keywords ---------------------------------------------------------- The following section describes in detail the keywords that may be used to define fields of view in instrument kernels. These are the values NAIF suggests you use when developing new software. The descriptions of the keywords that follow will make use of the terminology 'boundary corner vector'. These are vectors that are designed to describe the extent or edge of the field of view cone. See the discussion of the FOV_BOUNDARY and FOV_SHAPE keywords for more details. As with other instrument kernel keywords, the FOV definition keywords are constructed using this template: INS[ID]_[WORD] where [ID] is replaced with the NAIF instrument ID for the instrument and [WORD] is one of the following: FOV_FRAME is the name of the frame in which the vectors used to define the field of view are specified. FOV_SHAPE is the character string that describes the ``shape'' of the field of view. The only acceptable values are: 'POLYGON' 'RECTANGLE' 'ELLIPSE' 'CIRCLE' If the value of FOV_SHAPE is 'POLYGON', then the field of view of the instrument is a pyramidal polyhedra. The vertex of the pyramid is at the instrument and the boundary corner vectors are parallel to the rays along the edges of the pyramidal cone. If the value of FOV_SHAPE is 'RECTANGLE', then the field of view of the instrument is a pyramid with a rectangular base centered about the boresight vector. The boundary corner vectors are parallel to the rays along the edges of the rectangular cone. If the value of FOV_SHAPE is 'ELLIPSE', then the field of view of the instrument is an elliptical cone with the boresight vector as the axis of the cone. In this case one of the boundary corner vectors connects the vertex of the cone with the semi-major axis of a cross-section of the cone whose normal is parallel to the axis of the cone. The other boundary corner vector points to one end of the semi-minor axis in the same cross section. If the value of FOV_SHAPE is 'CIRCLE', then the field of view of the instrument is a circular cone about the boresight vector. The single boundary corner vector is parallel to a ray that lies along the edge of the cone that makes up the boundary of the field of view. BORESIGHT is a vector in the field of view that points in the direction of the field of view center. The length of BORESIGHT is not specified other than being non-zero. For circular, elliptical, and rectangular fields of view, the boresight should be the central axis of the field of view cone. FOV_CLASS_SPEC states which FOV specification will be used to describe the field of view. Acceptable values are: 'CORNERS' 'ANGLES' CORNERS Specification This specification is valid for all values of FOV_SHAPE. The extent of the field of view is described by providing vectors that lie along the edges of the field of view cone. FOV_BOUNDARY is an array of vectors that point to the ``corners'' of the instrument field of view. For polygonal and rectangular cones, these vectors are parallel to the rays that connect the vertex and the corners of the polygon generated by cross sections normal to the boresight. For the elliptical case these vectors are parallel to rays connecting the vertex of the cone with the semi-major and semi-minor axes of the elliptical cross section normal to the boresight. In the circular case it is one of the vectors that lie along the edge of the field of view cone. In cases where multiple boundary corner vectors are required, they must be listed in the order one encounters their intercepts travelling around the edge of a cross section normal to the boresight. As with the BORESIGHT, the length of the boundary corner vectors is unspecified, save that they must be non-zero. ANGLES Specification This specification is valid for a subset of the supported FOV_SHAPE values. Acceptable values are: 'RECTANGLE' 'ELLIPSE' 'CIRCLE' The circular FOV defintion does not make use of the FOV_CROSS_ANGLE keyword outlined below, and it should be ignored in this case. FOV_REF_VECTOR is a vector with a component that lies in a plane normal to the field of view boresight. This component determines the orientation of the field of view about the boresight. As with other vectors in the FOV definition, the length of FOV_REF_VECTOR is unspecified, save that it must be non-zero. For cases where FOV_SHAPE is 'RECTANGLE', the component of this vector that lies in a plane normal to the boresight is parallel to one side of the pyramidal field of view cone. In the case where FOV_SHAPE is 'ELLIPSE', the component of this vector that lies in a plane normal to the boresight is parallel to the semi-major or semi-minor axis of elliptical cross sections of the FOV cone normal to the boresight. In the case where FOV_SHAPE is 'CIRCLE', any vector with a component in planes normal to the boresight is acceptable. FOV_REF_ANGLE is the angle associated with FOV_REF_VECTOR that assists in describing the angular extent of the field of view. Below illustrates the rectangular case: reference vector .| `-. .' | ^ "ref" `-. | | angle .' | `-. | .^ .' | |`-. | .' ref.vec | | | `-.|.' x <-------| o----------o boresight | | Boresight | . | .' | .' | .' |.' For the elliptical case, this is the angle between the boresight and the ray that is the intersection of the FOV cone and the plane containing the boresight, the reference vector, and the semi-major or semi-minor axis of the elliptical cross sections normal to the boresight. It is analogous to the rectangular diagram illustrated above. For the circular case, this is the angle between the boresight the ray that is the intersection of the FOV cone and then plane containing the boresight and the reference vector. FOV_CROSS_ANGLE is the angle from the boresight to the edge of the FOV cone in the plane defined by the boresight and the cross product of the reference vector and the boresight. This keyword is ignored and not required when FOV_SHAPE is 'CIRCLE'. Below illustrates the rectangular case: reference vector .| `-. .' | ^ "cross" `-' | | angle .' | | .^ .' .|`-. | .' ref.vec | .' | `-.|.' x <-------| o----------o boresight | | Boresight | . | .' | .' | .' |.' For the elliptical case, this is the angle between the boresight and the ray that is the intersectoin of the FOV cone and the plane containing the boresight, the cross product of the reference vector with the boresight, and the semi-major or semi-minor axis of the elliptical cross sections normal to the boresight. It is analogous to the rectangular diagram illustrated above. FOV_ANGLE_UNITS are the units in which the FOV_REF_ANGLE and FOV_CROSS_ANGLE are expressed. Acceptable values are: 'RADIANS' 'DEGREES' 'ARCMINUTES' 'ARCSECONDS' 'HOURANGLE' 'MINUTEANGLE' Some Cassini Examples ---------------------------------------------------------- The following are examples of how changes to the Cassini FOV definitions would be implemented on a shape by shape basis. It is important to note that if you are interested in using the boundary corner vectors the toolkit routine GETFOV (after updates delivered with N0052) will compute the boundary corners from the ANGLES specification. CASSINI_CAPS_IMS: A Rectangular Example Currently the FOV definition in the CAPS I-kernel for IMS is: The Ion Mass Spectrometer has a 154.5 deg by 8.3 deg field of view (full width at half maximum), with a boresight along the -Y axis of the CASSINI_CAPS frame. It has eight pixels, 14.5 by 8.3 deg (FWHM), spaced evenly in along the length of the field of view. Since the IMS FOV is rectangular, four boundary corner vectors must be computed. This requires two separate views. First consider looking up the X-axis at the X=0 plane, which permits the computation of the the Z components of the boundary corner vectors. In this plane, the half angle of note is 77.25 degrees. ^ Z | ins | | /| | / | | / | | / o | |/ 77.25 | <-------------x- - - - -|- - - Y X \ | ins ins \ | \ | \ | \| |-- 1.0 --| Plane X = 0 Z Component = +/- 1.0 * tan ( 77.25 degrees ) = +/- 4.419364096 Since the field of view is rectangular a similar computation yields the X components. This time, look down the Z axis at the Z=0 plane. The half angle of interest is 4.5 degrees. ^ X | ins | | /| | / | | / | | / o | |/ 4.15 | <-------------o- - - - -|- - - Y Z \ | ins ins \ | \ | \ | \| |-- 1.0 --| Plane Z = 0 X Component = +/- 1.0 * tan ( 4.15 degrees ) = +/- 0.072558095 The boundary corner vectors are then normalized to unit length. All of these values are collected in the FOV keywords defined below. \begindata INS-82820_FOV_FRAME = 'CASSINI_CAPS' INS-82820_FOV_SHAPE = 'RECTANGLE' INS-82820_BORESIGHT = ( 0.0000000000000000 -1.0000000000000000 0.0000000000000000 ) INS-82820_FOV_BOUNDARY_CORNERS = ( -0.0160113326840280 -0.2206691439048200 +0.9752172917632200 -0.0160113326840280 -0.2206691439048200 -0.9752172917632200 +0.0160113326840280 -0.2206691439048200 -0.9752172917632200 +0.0160113326840280 -0.2206691439048200 +0.9752172917632200 ) \begintext Making use of the new FOV ANGLES specification this will become: \begindata INS-82820_FOV_FRAME = 'CASSINI_CAPS' INS-82820_FOV_SHAPE = 'RECTANGLE' INS-82820_BORESIGHT = ( 0.0000000000000000 -1.0000000000000000 0.0000000000000000 ) INS-82820_FOV_CLASS_SPEC = 'ANGLES' INS-82820_FOV_REF_VECTOR = ( 0.0000000000000000 0.0000000000000000 1.0000000000000000 ) INS-82820_FOV_REF_ANGLE = ( 77.25 ) INS-82820_FOV_CROSS_ANGLE = ( 4.15 ) INS-82820_FOV_ANGLE_UNITS = 'DEGREES' \begintext CASSINI_RADAR_1: An Elliptical Example Currently the FOV definition for RADAR_1 in the RADAR IK is: Since Beam 1 is an elliptical beam, we require two separate views to compute the two boundary corner vectors. First, consider looking down the X-axis of the CASSINI_RADAR_1 frame at the X=0 plane. This permits the computation of the boundary corner vector that intercepts the semi-major axis. The half angle of interest is 0.675 degrees. ^ Y | ins | | /| | / | | / | | / o | |/ 0.675 | x---------------> X \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane X = 0 Y Component = 1.0 * tan ( 0.675 degrees ) = 0.011781518 Since the semi-major axis of the ellipse is aligned with the Y-axis in the instrument frame, we have the X Component of this boundary corner vector must be 0. To compute the other boundary corner vector that intercepts the semi-minor axis, look up the Y-axis at the Y=0 plane. This time the half angle of interest is 0.175. ^ X | ins | | /| | / | | / | | / o | |/ 0.175 | o---------------> Y \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane Y = 0 X Component = 1.0 * tan ( 0.175 degrees ) = 0.003054336 The boundary corner vectors as displayed below are normalized to unit length. \begindata INS-82810_FOV_FRAME = 'CASSINI_RADAR_1' INS-82810_FOV_SHAPE = 'ELLIPSE' INS-82810_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82810_FOV_BOUNDARY_CORNERS = ( 0.0000000000000000 +0.0117806999367490 +0.9999306051466800 +0.0030543214420707 0.0000000000000000 +0.9999953355493900 ) \begintext Making use of the new FOV ANGLES specification this will become: \begindata INS-82810_FOV_FRAME = 'CASSINI_RADAR_1' INS-82810_FOV_SHAPE = 'ELLIPSE' INS-82810_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82810_FOV_CLASS_SPEC = 'ANGLES' INS-82810_FOV_REF_VECTOR = ( 0.0000000000000000 +1.0000000000000000 0.0000000000000000 ) INS-82810_FOV_REF_ANGLE = ( 0.675 ) INS-82810_FOV_CROSS_ANGLE = ( 0.175 ) INS-82810_FOV_ANGLE_UNITS = 'DEGREES' \begintext CASSINI_MIMI_LEMMS1: A Circular Example Currently the FOV definition in the MIMI I-kernel for LEMMS1 is: Since the MIMI_LEMMS1 detector's FOV is circular and it's diameter is 15.0 degrees, looking down the X-axis in the CASSINI_MIMI_LEMMS1 frame, we have: (Note we are arbitrarily choosing a vector that terminates in the Z=1 plane.) ^ Y | ins | | /| | / | | / | | / o | |/ 7.50 | x---------------> X \ | Z ins \ | ins \ | \ | \| |-- 1.0 --| Plane X = 0 Now from here we see that the Y component of one 'boundary corner' vector is: Y Component = 1.0 * tan ( 7.50 degrees ) = 0.131652498 The boundary corner vector as displayed below is normalized to unit length. \begindata INS-82762_FOV_FRAME = 'CASSINI_MIMI_LEMMS1' INS-82762_FOV_SHAPE = 'CIRCLE' INS-82762_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82762_FOV_BOUNDARY_CORNERS = ( 0.0000000000000000 +0.1305261922200500 +0.9914448613738100 ) \begintext Making use of the new FOV ANGLES specification this will become: \begindata INS-82762_FOV_FRAME = 'CASSINI_MIMI_LEMMS1' INS-82762_FOV_SHAPE = 'CIRCLE' INS-82762_BORESIGHT = ( 0.0000000000000000 0.0000000000000000 +1.0000000000000000 ) INS-82762_FOV_CLASS_SPEC = 'ANGLES' INS-82762_FOV_REF_VECTOR = ( 0.0000000000000000 +1.0000000000000000 0.0000000000000000 ) INS-82762_FOV_REF_ANGLE = ( 7.5 ) INS-82762_FOV_ANGLE_UNITS = 'DEGREES' \begintext