| surfnm | 
| Table of contents Procedure
     SURFNM ( Surface normal vector on an ellipsoid )
     SUBROUTINE SURFNM ( A, B, C, POINT, NORMAL )
Abstract
     Compute the outward-pointing, unit normal vector at a point on
     the surface of an ellipsoid.
Required_Reading
     None.
Keywords
     ELLIPSOID
     GEOMETRY
Declarations
     IMPLICIT NONE
     DOUBLE PRECISION   A
     DOUBLE PRECISION   B
     DOUBLE PRECISION   C
     DOUBLE PRECISION   POINT  ( 3 )
     DOUBLE PRECISION   NORMAL ( 3 )
Brief_I/O
     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     A          I   Length of the ellipsoid semi-axis along the X-axis.
     B          I   Length of the ellipsoid semi-axis along the Y-axis.
     C          I   Length of the ellipsoid semi-axis along the Z-axis.
     POINT      I   Body-fixed coordinates of a point on the ellipsoid.
     NORMAL     O   Outward pointing unit normal to ellipsoid at POINT.
Detailed_Input
     A        is the length of the semi-axis of the ellipsoid that is
              parallel to the X-axis of the body-fixed reference frame.
     B        is the length of the semi-axis of the ellipsoid that is
              parallel to the Y-axis of the body-fixed reference frame.
     C        is the length of the semi-axis of the ellipsoid that is
              parallel to the Z-axis of the body-fixed reference frame.
     POINT    is a 3-vector giving the bodyfixed coordinates of a point
              on the ellipsoid. In bodyfixed coordinates, the semi-axes
              of the ellipsoid are aligned with the X, Y, and Z-axes of
              the reference frame.
Detailed_Output
     NORMAL   is the unit vector pointing away from the ellipsoid and
              normal to the ellipsoid at POINT.
Parameters
     None.
Exceptions
     1)  If any of the axes are non-positive, the error
         SPICE(BADAXISLENGTH) is signaled.
Files
     None.
Particulars
     This routine computes the outward pointing unit normal vector to
     the ellipsoid having semi-axes of length A, B, and C from the
     point POINT.
Examples
     A typical use of SURFNM would be to find the angle of incidence
     of the light from the sun at a point on the surface of an
     ellipsoid.
     Let Q be a 3-vector representing the rectangular body-fixed
     coordinates of a point on the ellipsoid (we are assuming that
     the axes of the ellipsoid are aligned with the axes of the
     body fixed frame.) Let V be the vector from Q to the sun in
     bodyfixed coordinates. Then the following code fragment could
     be used to compute angle of incidence of sunlight at Q.
        CALL SURFNM   ( A, B, C, Q, NRML )
        INCIDN = VSEP ( V,          NRML )
Restrictions
     1)  It is assumed that the input POINT is indeed on the ellipsoid.
         No checking for this is done.
Literature_References
     None.
Author_and_Institution
     N.J. Bachman       (JPL)
     J. Diaz del Rio    (ODC Space)
     B.V. Semenov       (JPL)
     W.L. Taber         (JPL)
Version
    SPICELIB Version 1.4.0, 26-OCT-2021 (JDR)
        Added IMPLICIT NONE statement.
        Edited the header to comply with NAIF standard. Removed
        unnecessary $Revisions section.
        Updated the documentation to refer to "reference frame" instead
        of "coordinate system" as per NAIF conventions.
    SPICELIB Version 1.3.2, 23-FEB-2016 (NJB)
        Corrected some typos in the header.
    SPICELIB Version 1.3.1, 18-MAY-2010 (BVS)
        Removed "C$" marker from text in the header.
    SPICELIB Version 1.3.0, 02-SEP-2005 (NJB)
        Updated to remove non-standard use of duplicate arguments
        in VHAT call.
    SPICELIB Version 1.2.0, 07-AUG-1996 (WLT)
        Added a SAVE statement so that the error message will
        not be lost between separate invocations of the routine.
    SPICELIB Version 1.1.0, 21-JUL-1995 (WLT)
        A typo in the $Examples section was corrected
    SPICELIB Version 1.0.1, 10-MAR-1992 (WLT)
        Comment section for permuted index source lines was added
        following the header.
    SPICELIB Version 1.0.0, 31-JAN-1990 (WLT) | 
Fri Dec 31 18:36:58 2021