Table of contents
CSPICE_DVDOT returns the derivative with respect to time of the dot
product of position vectors.
Given:
s1 any state vector.
help, s1
DOUBLE = Array[6]
The components are in order (x, y, z, dx/dt, dy/dt, dz/dt )
s2 any state vector.
help, s2
DOUBLE = Array[6]
the call:
dvdot = cspice_dvdot( s1, s2 )
returns:
dvdot the derivative of the dot product of the position portions of
the two state vectors `s1' and `s2'.
help, dvdot
DOUBLE = Scalar
`dvdot' returns with the same measure of vectorization (N)
as `s1' and `s2'.
None.
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.
1) Suppose that given two state vectors whose position components
are unit vectors, and that we need to compute the rate of
change of the angle between the two vectors.
Example code begins here.
PRO dvdot_ex1
;;
;; Define the two state vectors whose position
;; components are unit vectors.
;;
s1 = [ 7.2459e-01, 6.6274e-01, 1.8910e-01, $
-1.5990e-06, 1.6551e-06, 7.4873e-07 ]
s2 = [ 8.4841e-01, -4.7790e-01, -2.2764e-01, $
1.0951e-07, 1.0695e-07, 4.8468e-08 ]
;;
;; We know that the Cosine of the angle `theta' between them
;; is given by
;;
;; cos(theta) = cspice_vdot(s1,s2)
;;
;; Thus by the chain rule, the derivative of the angle is
;; given by:
;;
;; sin(theta) dtheta/dt = cspice_dvdot(s1,s2)
;;
;; Thus for values of `theta' away from zero we can compute
;; dtheta/dt as:
;;
dtheta = cspice_dvdot(s1,s2) / $
sqrt( 1 - cspice_vdot( s1[0:2], s2[0:2] )^2 )
print, format='(A,F18.12)', 'Rate of change of angle between' + $
' S1 and S2:', dtheta
END
When this program was executed on a Mac/Intel/IDL8.x/64-bit
platform, the output was:
Rate of change of angle between S1 and S2: -0.000002232415
Note that if the position components of `s1' and `s2' are parallel,
the derivative of the angle between the positions does not
exist. Any code that computes the derivative of the angle
between two position vectors should account for the case
when the position components are parallel.
In this discussion, the notation
< v1, v2 >
indicates the dot product of vectors `v1' and `v2'.
Given two state vectors `s1' and `s2' made up of position and velocity
components (r1,v1) and (r2,v2) respectively, cspice_dvdot calculates
the derivative of the dot product of `p1' and `p2', i.e. the time
derivative
d
-- < r1, r2 > = < v1, r2 > + < r1, v2 >
dt
1) If any of the input arguments, `s1' or `s2', is undefined, an
error is signaled by the IDL error handling system.
2) If any of the input arguments, `s1' or `s2', is not of the
expected type, or it does not have the expected dimensions and
size, an error is signaled by the Icy interface.
None.
1) The user is responsible for determining that the states `s1' and
`s2' are not so large as to cause numeric overflow. In most
cases this won't present a problem.
2) An implicit assumption exists that `s1' and `s2' are specified in
the same reference frame. If this is not the case, the
numerical result has no meaning.
ICY.REQ
None.
J. Diaz del Rio (ODC Space)
E.D. Wright (JPL)
-Icy Version 1.0.3, 10-AUG-2021 (JDR)
Edited the header to comply with NAIF standards. Added complete
example code.
Added -Parameters, -Exceptions, -Files, -Restrictions,
-Literature_References and -Author_and_Institution sections.
Removed reference to the routine's corresponding CSPICE header from
-Abstract section.
Added arguments' type and size information in the -I/O section.
-Icy Version 1.0.2, 20-APR-2010 (EDW)
Edited header, expanded descriptions.
-Icy Version 1.0.1, 09-DEC-2005 (EDW)
Added -Examples section.
-Icy Version 1.0.0, 16-JUN-2003 (EDW)
time derivative of a dot product
|