public class R3x3JacobiDecomposition
extends java.lang.Object
Encapsulates the results of an eigenvalue decomposition operation on a symmetric R3×3 matrix A object using Jacobi iterations.
If the matrix is symmetric it can be factored as
A = RDRT
where A is the target matrix, R is an orthogonal
matrix in SO(3), and D is the diagonal matrix of real
eigenvales of A.
Most of the work of the Jacobi iterations is done in the helper
class
.
JacobiIterate
Modifier and Type | Field and Description |
---|---|
static boolean |
bolDebug
Class debugging flag
|
static double |
ERROR_TOLERANCE
small numerical tolerance
|
static double |
ONE_DEGREE
the value of one degree in radians
|
static double |
ROTATION_TOLERANCE
Stopping error criterion
|
Constructor and Description |
---|
R3x3JacobiDecomposition(R3x3 matTarget)
Constructor for
R3x3JacobiDecomposition objects. |
Modifier and Type | Method and Description |
---|---|
R3x3 |
getDiagonalMatrix()
Return the matrix D of eigenvalues in the decomposition.
|
double[] |
getEigenvalues()
Get the array of all eigenvalues.
|
int |
getIterationCount()
Get the number of iterations necessary to diagonalize the matrix
to give precision.
|
R3x3 |
getRotationMatrix()
Get the matrix R of eigenvectors for the decomposition.
|
static void |
setDebug(boolean bolDebug)
Turn debugging flag on or off.
|
public static final double ONE_DEGREE
public static final double ROTATION_TOLERANCE
public static final double ERROR_TOLERANCE
public static boolean bolDebug
public R3x3JacobiDecomposition(R3x3 matTarget) throws java.lang.IllegalArgumentException
R3x3JacobiDecomposition
objects. The
decomposition is done in the construction of this object.matTarget
- target matrix to factorizejava.lang.IllegalArgumentException
- matrix is not symmetricpublic static void setDebug(boolean bolDebug)
bolDebug
- value of debugging flag.public int getIterationCount()
ROTATION_TOLERANCE
public double[] getEigenvalues()
public R3x3 getRotationMatrix()
public R3x3 getDiagonalMatrix()