SpiceDouble dvnorm_c ( ConstSpiceDouble state[6] )
Function to calculate the derivative of the norm of a 3-vector.
None.
DERIVATIVES
MATH
VECTOR
VARIABLE I/O DESCRIPTION
-------- --- --------------------------------------------------
state I A 6-vector composed of three coordinates and their
derivatives.
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.
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 >
None.
None.
None.
A common use for this routine is to calculate the time derivative
of the radius corresponding to a state vector.
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
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.
None.
Ed Wright (JPL)
-CSPICE Version 1.0.0, 04-MAY-2010 (EDW)
derivative of 3-vector norm
Link to routine dvnorm_c source file dvnorm_c.c
|