## Interface XMatrix

• All Superinterfaces:
`Cloneable`, `Cloneable`, `Matrix`
All Known Implementing Classes:
`GeneralMatrix`, `Matrix1`, `Matrix2`, `Matrix3`, `Matrix4`

```public interface XMatrix
extends Matrix```
A matrix capable of some matrix operations. The basic `Matrix` interface is basically just a two dimensional array of numbers. The `XMatrix` interface add inversion and multiplication capabilities.
Since:
2.2
Author:
Martin Desruisseaux (IRD), Simone Giannecchini
• ### Method Summary

All Methods
Modifier and Type Method Description
`void` `add​(double scalar)`
`void` ```add​(double scalar, XMatrix matrix)```
Set to the scalar addition of `scalar+matrix`
``` ```
`void` `add​(XMatrix matrix)`
Set to the matrix addition of `this+matrix`.
`void` ```add​(XMatrix matrix1, XMatrix matrix2)```
Set to the matrix addition of `matrix1+matrix2`.
`double` `determinate()`
Computes the determinant
`boolean` ```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 array
`void` `invert()`
Inverts this matrix in place.
`void` `invert​(Matrix matrix)`
Set to the inverse of the provided matrix.
`boolean` `isAffine()`
Returns `true` if this matrix is an affine transform.
`boolean` `isIdentity​(double tolerance)`
Returns `true` 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 of `scalar - matrix2`.
`void` `sub​(Matrix matrix)`
In-place matrix subtraction: `this - matrix`.
`void` ```sub​(Matrix matrix1, Matrix matrix2)```
Set to the difference of `matrix1 - 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.
Specified by:
`getNumRow` in interface `Matrix`
Returns:
The number of rows in this matrix.
• #### getNumCol

`int getNumCol()`
Returns the number of colmuns in this matrix.
Specified by:
`getNumCol` in interface `Matrix`
Returns:
The number of columns in this matrix.
• #### getElement

```double getElement​(int row,
int column)```
Returns the element at the specified index.
Specified by:
`getElement` in interface `Matrix`
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)`
Returns `true` 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 returning `true` if and only if all differences are smaller than or equal to `tolerance`.
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()`
Returns `true` 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.

`void add​(double scalar)`
Parameters:
`scalar` - The value that's added to each element.

```void add​(double scalar,
XMatrix matrix)```
Set to the scalar addition of `scalar+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 of this+matrix. Parameters: matrix - The matrix that is to be added. Not modified. add void add​(XMatrix matrix1, XMatrix matrix2) Set to the matrix addition of matrix1+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, performs this = this × matrix. In the context of coordinate transformations, this is equivalent to AffineTransform.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, performs this = this × matrix. In the context of coordinate transformations, this is equivalent to AffineTransform.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 of scalar - 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. sub void sub​(Matrix matrix1, Matrix matrix2) Set to the difference of matrix1 - matrix2. Parameters: matrix1 - matrix, not modified matrix2 - matrix, not modified ```
• ``` ```
``` ```
``` ```
• ``` ```
``` ```
``` ```
``` ```