Index Page mtxv_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
       void mtxv_c ( ConstSpiceDouble     m1  [3][3],
                     ConstSpiceDouble     vin [3],
                     SpiceDouble          vout[3]   )
#### Abstract
       mtxv_c multiplies the transpose of a 3x3 matrix on the left with
       a vector on the right.
#### Required_Reading
       None.
#### Keywords
       VECTOR,  MATRIX
#### Brief_I/O
       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.
#### Detailed_Input
       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
                  a requirement).

       vin        is an arbitrary 3-dimensional double precision
                  vector.
#### Detailed_Output
       vout       is a 3-dimensional double precision vector. vout is
                  the product vout = (m1**t)  x (vin). vout can
                  overwrite vin.
#### Parameters
       None.
#### Exceptions
       Error free.
#### Files
       None.
#### Particulars
       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.
#### Examples
       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.

              -1
       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. |
#### Restrictions
       The user is responsible for checking the magnitudes of the
       elements of m1 and vin so that a floating point overflow does
       not occur.
#### Literature_References
       None.
#### Author_and_Institution
       E.D. Wright     (JPL)
       W.M. Owen       (JPL)
#### Version
       -CSPICE Version 1.0.1, 10-NOV-2006   (EDW)

          Added Parameters section header.

       -CSPICE Version 1.0.0, 16-APR-1999 (EDW)
#### Index_Entries
       matrix_transpose times 3-dimensional vector
#### Link to routine mtxv_c source file mtxv_c.c

    Wed Jun  9 13:05:26 2010