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 Apr  5 17:54:39 2017