Index Page
invort_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 invort_c ( ConstSpiceDouble   m  [3][3],
                   SpiceDouble        mit[3][3] ) 

Abstract

 
   Given a matrix, construct the matrix whose rows are the  
   columns of the first divided by the length squared of the 
   the corresponding columns of the input matrix. 
 

Required_Reading

 
   None. 
 

Keywords

 
   MATRIX 
 

Brief_I/O

 
   Variable  I/O  Description 
   --------  ---  -------------------------------------------------- 
   m          I   A 3x3 matrix. 
   mit        I   m after transposition and scaling of rows. 
    

Detailed_Input

 
   m          is a 3x3 matrix. 
 

Detailed_Output

 
   mit        is the matrix obtained by transposing m and dividing 
              the rows by squares of their norms. 
 

Parameters

 
   None. 
 

Exceptions

 
   1) If any of the columns of m have zero length, the error  
      SPICE(ZEROLENGTHCOLUMN) will be signaled. 
       
   2) If any column is too short to allow computation of the 
      reciprocal of its length without causing a floating  
      point overflow, the error SPICE(COLUMNTOOSMALL) will 
      be signalled. 
       

Files

 
   None. 
 

Particulars

 
   Suppose that m is the matrix  
     
           -                      - 
          |   A*u    B*v     C*w   |    
          |      1      1       1  | 
          |                        | 
          |   A*u    B*v     C*w   |    
          |      2      2       2  | 
          |                        | 
          |   A*u    B*v     C*w   |   
          |      3      3       3  | 
           -                      - 
 
   where the vectors (u , u , u ),  (v , v , v ),  and (w , w , w ) 
                       1   2   3      1   2   3          1   2   3 

   are unit vectors. This routine produces the matrix: 
     
     
           -                      - 
          |   a*u    a*u     a*u   |    
          |      1      2       3  | 
          |                        | 
          |   b*v    b*v     b*v   |    
          |      1      2       3  | 
          |                        | 
          |   c*w    c*w     c*w   |   
          |      1      2       3  | 
           -                      - 
     
   where a = 1/A, b = 1/B, and c = 1/C. 
     

Examples

 
   Suppose that you have a matrix m whose columns are orthogonal  
   and have non-zero norm (but not necessarily norm 1).  Then the  
   routine invort_c can be used to construct the inverse of m: 
      
      #include "SpiceUsr.h"
           .
           .
           .
      invort_c ( m, invers );
         
   This method is numerically more robust than calling the 
   routine invert_c. 
 

Restrictions

 
   None. 
 

Literature_References

 
   None. 
 

Author_and_Institution

 
   W.L. Taber     (JPL) 
   N.J. Bachman   (JPL)

Version

 
   -CSPICE Version 1.0.0, 02-JAN-2002 (WLT) (NJB)

Index_Entries

 
   Transpose a matrix and invert the lengths of the rows 
   Invert a pseudo orthogonal matrix
 

Link to routine invort_c source file invort_c.c

Wed Apr  5 17:54:37 2017