- 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.
- 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.
- 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.
- 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.
- Author_and_Institution
W.L. Taber (JPL)
N.J. Bachman (JPL)
- Literature_References
None.
- 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 source