Interface XMatrix
-
- All Known Implementing Classes:
GeneralMatrix
,Matrix1
,Matrix2
,Matrix3
,Matrix4
public interface XMatrix extends Matrix
A matrix capable of some matrix operations. The basicMatrix
interface is basically just a two dimensional array of numbers. TheXMatrix
interface add inversion and multiplication capabilities.- Since:
- 2.2
- Author:
- Martin Desruisseaux (IRD), Simone Giannecchini
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
add(double scalar)
Performs an in-place scalar addition.void
add(double scalar, XMatrix matrix)
Set to the scalar addition ofscalar+matrix
void
add(XMatrix matrix)
Set to the matrix addition ofthis+matrix
.void
add(XMatrix matrix1, XMatrix matrix2)
Set to the matrix addition ofmatrix1+matrix2
.double
determinate()
Computes the determinantboolean
equals(Matrix matrix, double tolerance)
Compares the element values.void
getColumn(int col, double[] array)
Extract col to provided array.double
getElement(int row, int column)
Returns the element at the specified index.int
getNumCol()
Returns the number of colmuns in this matrix.int
getNumRow()
Returns the number of rows in this matrix.void
getRow(int row, double[] array)
Extract row to provided arrayvoid
invert()
Inverts this matrix in place.void
invert(Matrix matrix)
Set to the inverse of the provided matrix.boolean
isAffine()
Returnstrue
if this matrix is an affine transform.boolean
isIdentity(double tolerance)
Returnstrue
if this matrix is an identity matrix using the provided tolerance.void
mul(double scalar)
Sets this matrix to the result of multiplying itself with the provided scalar.void
mul(double scalar, Matrix matrix)
Sets the value of this matrix to the result of multiplying the provided scalar and matrix.void
mul(Matrix matrix)
Sets the value of this matrix to the result of multiplying itself with the specified matrix.void
mul(Matrix matrix1, Matrix matrix2)
Sets the value of this matrix to the result of multiplying matrix1 and matrix2.void
multiply(Matrix matrix)
Sets the value of this matrix to the result of multiplying itself with the specified matrix.void
negate()
Negates the value of this matrix:this = -this
.void
negate(Matrix matrix)
Negates the value of this matrix:this = -matrix
.void
setColumn(int column, double... values)
Sets the value of the column using an array of values.void
setIdentity()
Sets this matrix to the identity matrix.void
setRow(int row, double... values)
Sets the value of the row using an array of values.void
setZero()
Sets all the values in this matrix to zero.void
sub(double scalar)
In-place matrix subtraction:this - scalar
.void
sub(double scalar, Matrix matrix)
Set to the difference ofscalar - matrix2
.void
sub(Matrix matrix)
In-place matrix subtraction:this - matrix
.void
sub(Matrix matrix1, Matrix matrix2)
Set to the difference ofmatrix1 - matrix2
.void
transpose()
Sets the value of this matrix to its transpose.void
transpose(Matrix matrix)
Set to the transpose of the provided matrix.-
Methods inherited from interface Matrix
clone, isIdentity, setElement
-
-
-
-
Method Detail
-
getNumRow
int getNumRow()
Returns the number of rows in this matrix.
-
getNumCol
int getNumCol()
Returns the number of colmuns in this matrix.
-
getElement
double getElement(int row, int column)
Returns the element at the specified index.- Specified by:
getElement
in interfaceMatrix
- Parameters:
row
- The row number to be retrieved (zero indexed).column
- The column number to be retrieved (zero indexed).- Returns:
- The value at the indexed element.
-
getRow
void getRow(int row, double[] array)
Extract row to provided array
-
setRow
void setRow(int row, double... values)
Sets the value of the row using an array of values.
-
getColumn
void getColumn(int col, double[] array)
Extract col to provided array.
-
setColumn
void setColumn(int column, double... values)
Sets the value of the column using an array of values.
-
setZero
void setZero()
Sets all the values in this matrix to zero.
-
setIdentity
void setIdentity()
Sets this matrix to the identity matrix.
-
isIdentity
boolean isIdentity(double tolerance)
Returnstrue
if this matrix is an identity matrix using the provided tolerance. This method is equivalent to computing the difference between this matrix and an identity matrix of identical size, and returningtrue
if and only if all differences are smaller than or equal totolerance
.- Parameters:
tolerance
- The tolerance value.- Returns:
true
if this matrix is close enough to the identity matrix given the tolerance value.- Since:
- 2.4
-
equals
boolean equals(Matrix matrix, double tolerance)
Compares the element values.- Parameters:
matrix
- The matrix to compare.tolerance
- The tolerance value.- Returns:
true
if this matrix is close enough to the given matrix given the tolerance value.- Since:
- 2.5
-
isAffine
boolean isAffine()
Returnstrue
if this matrix is an affine transform. A transform is affine if the matrix is square and last row contains only zeros, except in the last column which contains 1.- Returns:
true
if this matrix is affine.
-
negate
void negate()
Negates the value of this matrix:this = -this
.
-
negate
void negate(Matrix matrix)
Negates the value of this matrix:this = -matrix
.- Parameters:
matrix
- Matrix to negated
-
transpose
void transpose()
Sets the value of this matrix to its transpose.
-
transpose
void transpose(Matrix matrix)
Set to the transpose of the provided matrix.- Parameters:
matrix
- The original matrix. Not modified.
-
invert
void invert() throws SingularMatrixException
Inverts this matrix in place.- Throws:
SingularMatrixException
- if this matrix is not invertible.
-
invert
void invert(Matrix matrix) throws SingularMatrixException
Set to the inverse of the provided matrix.- Parameters:
matrix
- The matrix that is to be inverted. Not modified.- Throws:
SingularMatrixException
- if this matrix is not invertible.
-
add
void add(double scalar)
Performs an in-place scalar addition.- Parameters:
scalar
- The value that's added to each element.
-
add
void add(double scalar, XMatrix matrix)
Set to the scalar addition ofscalar+matrix
- Parameters:
scalar
- The value that's added to each element.matrix
- The matrix that is to be added. Not modified.
-
add
void add(XMatrix matrix)
Set to the matrix addition ofthis+matrix
.- Parameters:
matrix
- The matrix that is to be added. Not modified.
-
add
void add(XMatrix matrix1, XMatrix matrix2)
Set to the matrix addition ofmatrix1+matrix2
.- Parameters:
matrix1
- First matrix to be added. Not modified.matrix2
- Second matrix to be added. Not modified.
-
determinate
double determinate()
Computes the determinant
-
multiply
void multiply(Matrix matrix)
Sets the value of this matrix to the result of multiplying itself with the specified matrix. In other words, performsthis
=this
×matrix
. In the context of coordinate transformations, this is equivalent toAffineTransform.concatenate
: first transforms by the supplied transform and then transform the result by the original transform.- Parameters:
matrix
- The matrix to multiply to this matrix.
-
mul
void mul(double scalar)
Sets this matrix to the result of multiplying itself with the provided scalar.
-
mul
void mul(double scalar, Matrix matrix)
Sets the value of this matrix to the result of multiplying the provided scalar and matrix.
-
mul
void mul(Matrix matrix)
Sets the value of this matrix to the result of multiplying itself with the specified matrix. In other words, performsthis
=this
×matrix
. In the context of coordinate transformations, this is equivalent toAffineTransform.concatenate
: first transforms by the supplied transform and then transform the result by the original transform.- Parameters:
matrix
- The matrix to multiply to this matrix.
-
mul
void mul(Matrix matrix1, Matrix matrix2)
Sets the value of this matrix to the result of multiplying matrix1 and matrix2.
-
sub
void sub(double scalar)
In-place matrix subtraction:this - scalar
.
-
sub
void sub(double scalar, Matrix matrix)
Set to the difference ofscalar - matrix2
.- Parameters:
matrix
- matrix, not modified
-
sub
void sub(Matrix matrix)
In-place matrix subtraction:this - matrix
.- Parameters:
matrix
- m by n matrix. Not modified.
-
-