void mtxv_c ( ConstSpiceDouble m1 ,
ConstSpiceDouble vin ,
SpiceDouble vout )
mtxv_c multiplies the transpose of a 3x3 matrix on the left with
a vector on the right.
VARIABLE I/O DESCRIPTION
-------- --- --------------------------------------------------
m1 I 3x3 double precision matrix.
vin I 3-dimensional double precision vector.
vout O 3-dimensional double precision vector. vout is
the product m1**t * vin.
m1 is an arbitrary 3x3 double precision matrix.
typically, m1 will be a rotation matrix since
then its transpose is its inverse (but this is NOT
vin is an arbitrary 3-dimensional double precision
vout is a 3-dimensional double precision vector. vout is
the product vout = (m1**t) x (vin). vout can
The intermediate results of the operation performed by this routine
are buffered in a temporary vector which is later moved to the output
vector. Thus vout can be actually vin if desired without
interfering with the computation.
Typically the matrix m1 will be a rotation matrix. Because
the transpose of an orthogonal matrix is equivalent to its
inverse, applying the rotation to the vector is accomplished by
multiplying the vector by the transpose of the matrix.
let m1 * vin = vout. If m1 is an orthogonal matrix,
then (m1**t) * vin = vout.
If m1 = | 1. 1. 0. | and vin = | 5. |
| | | |
| -1. 1. 0. | | 10. |
| | | |
| 0. 0. 1. | | 15. |
then the call
mtxv_c ( m1, vin, vout )
produces the vector
vout = | -5. |
| 15. |
| 15. |
The user is responsible for checking the magnitudes of the
elements of m1 and vin so that a floating point overflow does
E.D. Wright (JPL)
W.M. Owen (JPL)
-CSPICE Version 1.0.1, 10-NOV-2006 (EDW)
Added Parameters section header.
-CSPICE Version 1.0.0, 16-APR-1999 (EDW)
matrix_transpose times 3-dimensional vector