vsep_c

 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, ConstSpiceDouble v2 )

```

#### 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.
```

```
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.
```

```
None.
```

```
Error free.
```

```
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.
```

```
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`