Index Page dvnorm_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       dvnorm_c ( ConstSpiceDouble state[6] )
#### Abstract
       Function to calculate the derivative of the norm of a 3-vector.
#### Required_Reading
       None.
#### Keywords
       DERIVATIVES
       MATH
       VECTOR
#### Brief_I/O
       VARIABLE  I/O  DESCRIPTION
       --------  ---  --------------------------------------------------
       state      I   A 6-vector composed of three coordinates and their
                      derivatives.
#### Detailed_Input
       state   A double precision 6-vector, the second three
               components being the derivatives of the first three
               with respect to some scalar.

                  state =  ( x, dx )
                                --
                                ds

               A common form for 'state' would contain position and
               velocity.
#### Detailed_Output
       dvnorm_c   The value of d||x|| corresponding to 'state'.
                               ------
                                 ds

                                     1/2         2    2    2  1/2
                where ||x|| = < x, x >    =  ( x1 + x2 + x3 )

                          v = ( dx1, dx2, dx3 )
                                ---  ---  ---
                                ds   ds   ds

                     d||x||   < x, v >
                     ------ =  ------     =  < xhat, v >
                       ds            1/2
                              < x, x >
#### Parameters
       None.
#### Exceptions
       None.
#### Files
       None.
#### Particulars
       A common use for this routine is to calculate the time derivative
       of the radius corresponding to a state vector.
#### Examples
       Any numerical results shown for this example may differ between
       platforms as the results depend on the SPICE kernels used as input
       and the machine specific arithmetic implementation.

          #include "SpiceUsr.h"
          #include <stdio.h>
          #include <math.h>

          int main()
             {

             SpiceDouble     mag  [3] =
                              { -4., 4., 12. };

             SpiceDouble     x1   [3] =
                              { 1., sqrt(2.), sqrt(3.) };

             SpiceDouble     y   [6];

             /.
             Parallel...
             ./
             y[0] = x1[0] * pow(10., mag[0] );
             y[1] = x1[1] * pow(10., mag[0] );
             y[2] = x1[2] * pow(10., mag[0] );
             y[3] = x1[0];
             y[4] = x1[1];
             y[5] = x1[2];

             printf( "Parallel x, dx/ds         : %f\n", dvnorm_c( y ) );

             /.
             ...anti-parallel...
             ./
             y[0] = x1[0] * pow(10., mag[1] );
             y[1] = x1[1] * pow(10., mag[1] );
             y[2] = x1[2] * pow(10., mag[1] );
             y[3] = -x1[0];
             y[4] = -x1[1];
             y[5] = -x1[2];

             printf( "Anti-parallel x, dx/ds    : %f\n", dvnorm_c( y ) );

             /.
             ...'x' zero vector.
             ./
             y[0] = 0.;
             y[1] = 0.;
             y[2] = 0.;
             y[3] = x1[0] * pow(10., mag[2] );
             y[4] = x1[1] * pow(10., mag[2] );
             y[5] = x1[2] * pow(10., mag[2] );

             printf( "Zero vector x, large dx/ds: %f\n", dvnorm_c( y ) );

             return 0;
             }

       The program outputs:

          Parallel x, dx/ds         :  2.449490
          Anti-parallel x, dx/ds    : -2.449490
          Zero vector x, large dx/ds:  0.000000
#### Restrictions
       Error free.

       1) If the first three components of 'state' ("x") describes the
          origin (zero vector) the routine returns zero as the
          derivative of the vector norm.
#### Literature_References
       None.
#### Author_and_Institution
       Ed Wright     (JPL)
#### Version
       -CSPICE Version 1.0.0, 04-MAY-2010 (EDW)
#### Index_Entries
       derivative of 3-vector norm
#### Link to routine dvnorm_c source file dvnorm_c.c

    Wed Jun  9 13:05:21 2010