Index Page
vsep_c
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X 

Procedure
Abstract
Required_Reading
Keywords
Brief_I/O
Detailed_Input
Detailed_Output
Parameters
Exceptions
Files
Particulars
Examples
Restrictions
Literature_References
Author_and_Institution
Version
Index_Entries

Procedure

   SpiceDouble vsep_c ( ConstSpiceDouble v1[3], ConstSpiceDouble v2[3] ) 

Abstract

 
   Find the separation angle in radians between two double 
   precision, 3-dimensional vectors.  This angle is defined as zero 
   if either vector is zero. 
 

Required_Reading

 
   None. 
 

Keywords

 
   ANGLE,  VECTOR 
 

Brief_I/O

 
   VARIABLE  I/O  DESCRIPTION 
   --------  ---  -------------------------------------------------- 
    v1        I     First vector. 
    v2        I     Second vector. 
 
 

Detailed_Input

 
   v1      is an arbitrary double precision, 3-dimensional vector. 
   v2      is also an arbitrary double precision, 3-dimensional 
            vector.  v1 or v2 or both may be the zero vector. 
 

Detailed_Output

 
   vsep_c    is the angle between v1 and v2 expressed in radians. 
            vsep_c is strictly non-negative.  If either v1 or v2 is 
            the zero vector, then vsep_c is defined to be 0 radians. 
 

Parameters

 
   None. 
 

Exceptions

 
   Error free. 
 

Files

 
   None 
 

Particulars

 
   In the plane, it is a simple matter to calculate the angle 
   between two vectors once the two vectors have been made to be 
   unit length.  Then, since the two vectors form the two equal 
   sides of an isosceles triangle, the length of the third side 
   is given by the expression 
 
          length = 2.0 * sin ( vsep /2.0 ) 
 
   The length is given by the magnitude of the difference of the 
   two unit vectors 
 
          length = norm_c ( u1 - u2 ) 
 
   Once the length is found, the value of vsep_c may be calculated 
   by inverting the first expression given above as 
 
          vsep  = 2.0 * arcsin ( length/2.0 ) 
 
   This expression becomes increasingly unstable when vsep_c gets 
   larger than PI/2 or 90 degrees.  In this situation (which is 
   easily detected by determining the sign of the dot product of 
   v1 and v2) the supplementary angle is calculated first and 
   then vsep_c is given by 
 
          vsep  = pi - supplementary_angle 
 

Examples

 
   The following table gives sample values for v1, v2 and vsep_c 
   implied by the inputs. 
 
   v1                        v2                      vsep_c 
   ----------------------------------------------------------------- 
   (1, 0, 0)                (1, 0, 0)                0.0 
   (1, 0, 0)                (0, 1, 0)                PI/2 (=1.571...) 
 
 

Restrictions

 
   The user is required to insure that the input vectors will not 
   cause floating point overflow upon calculation of the vector 
   dot product since no error detection or correction code is 
   implemented.  In practice, this is not a significant 
   restriction. 
 

Literature_References

 
   None 
 

Author_and_Institution

 
   K.R. Gehringer  (JPL) 
   W.M. Owen       (JPL) 
   W.L. Taber      (JPL) 
 

Version

 
   -CSPICE Version 1.1.1, 17-APR-2006 (EDW)

      Typo correction to the value of PI/2 in the Examples
      section, 1.571 instead of 1.71.

   -CSPICE Version 1.1.0, 22-OCT-1998 (NJB)

      Made input vectors const.

   -CSPICE Version 1.0.0, 08-FEB-1998   (EDW)

Index_Entries

 
   angular separation of 3-dimensional vectors 
 
Wed Apr  5 17:54:47 2017