org.geotools.referencing.operation.matrix

## Class Matrix3

• All Implemented Interfaces:
Serializable, Cloneable, XMatrix, Matrix

```public class Matrix3
extends Object
implements XMatrix, Serializable```
A matrix of fixed 3×3 size.
Since:
2.2
Author:
Martin Desruisseaux (IRD)
Serialized Form
• ### Field Summary

Fields
Modifier and Type Field and Description
`static int` `SIZE`
The matrix size, which is 3.
• ### Constructor Summary

Constructors
Constructor and Description
`Matrix3()`
Creates a new identity matrix.
`Matrix3(AffineTransform transform)`
Constructs a 3×3 matrix from the specified affine transform.
```Matrix3(double m00, double m01, double m02, double m10, double m11, double m12, double m20, double m21, double m22)```
Creates a new matrix initialized to the specified values.
`Matrix3(Matrix matrix)`
Creates a new matrix initialized to the same value than the specified one.
• ### Method Summary

All Methods
Modifier and Type Method and 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`.
`Matrix3` `clone()`
Returns a clone of this matrix.
`double` `determinate()`
Computes the determinant
`boolean` ```equals(Matrix matrix, double tolerance)```
Compares the element values.
`boolean` `equals(Object obj)`
`boolean` `equalsAffine(AffineTransform transform)`
Returns `true` if this matrix is equals to the specified affine transform.
`void` ```getColumn(int col, double[] array)```
Extract col to provided array.
`double` ```getElement(int row, int column)```
Returns the value at the row, column position in the matrix.
`int` `getNumCol()`
Returns the number of colmuns in this matrix, which is always 3 in this implementation.
`int` `getNumRow()`
Returns the number of rows in this matrix, which is always 3 in this implementation.
`void` ```getRow(int row, double[] array)```
Extract row to provided array
`int` `hashCode()`
`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()`
Returns `true` if this matrix is an identity matrix.
`boolean` `isIdentity(double tolerance)`
Returns `true` if this matrix is an identity matrix using the provided tolerance.
`boolean` `isNaN()`
Returns `true` if at least one value is `NaN`.
`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)`
In-place multiply with provided matrix.
`void` ```mul(Matrix matrix1, Matrix matrix2)```
In-place update from matrix1 * matrix2.
`void` `multiply(Matrix matrix)`
Sets the value of this matrix to the result of multiplying itself with the specified matrix.
`void` `negate()`
Changes the sign of each element in the matrix.
`void` `negate(Matrix matrix)`
Negates the value of this matrix: `this = -matrix`.
`void` `set(double[] matrix)`
Update in place to the provided matrix (row-order).
`void` ```setColumn(int column, double... values)```
Sets the value of the column using an array of values.
`void` ```setElement(int row, int column, double value)```
Sets the value of the row, column position in the matrix.
`void` `setIdentity()`
Sets the main diagonal of this matrix to be 1.0.
`void` `setMatrix(AffineTransform transform)`
Sets this matrix to the specified affine transform.
`void` ```setRow(int row, double... values)```
Sets the value of the row using an array of values.
`void` `setZero()`
Sets each value of the matrix to 0.0.
`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`.
`AffineTransform` `toAffineTransform2D()`
Returns an affine transform for this matrix.
`String` `toString()`
Returns a string representation of this matrix.
`void` `transpose()`
Transposes the matrix.
`void` `transpose(Matrix matrix)`
Set to the transpose of the provided matrix.
• ### Methods inherited from class Object

`finalize, getClass, notify, notifyAll, wait, wait, wait`
• ### Field Detail

• #### SIZE

`public static final int SIZE`
The matrix size, which is 3.
Constant Field Values
• ### Constructor Detail

• #### Matrix3

`public Matrix3()`
Creates a new identity matrix.
• #### Matrix3

```public Matrix3(double m00,
double m01,
double m02,
double m10,
double m11,
double m12,
double m20,
double m21,
double m22)```
Creates a new matrix initialized to the specified values.
• #### Matrix3

`public Matrix3(AffineTransform transform)`
Constructs a 3×3 matrix from the specified affine transform.
• #### Matrix3

`public Matrix3(Matrix matrix)`
Creates a new matrix initialized to the same value than the specified one. The specified matrix size must be 3×3.
• ### Method Detail

• #### getNumRow

`public final int getNumRow()`
Returns the number of rows in this matrix, which is always 3 in this implementation.
Specified by:
`getNumRow` in interface `XMatrix`
Specified by:
`getNumRow` in interface `Matrix`
Returns:
The number of rows in this matrix.
• #### getNumCol

`public final int getNumCol()`
Returns the number of colmuns in this matrix, which is always 3 in this implementation.
Specified by:
`getNumCol` in interface `XMatrix`
Specified by:
`getNumCol` in interface `Matrix`
Returns:
The number of columns in this matrix.
• #### isNaN

`public final boolean isNaN()`
Returns `true` if at least one value is `NaN`.
Since:
2.3
• #### setMatrix

`public void setMatrix(AffineTransform transform)`
Sets this matrix to the specified affine transform.
Since:
2.3
• #### equalsAffine

`public boolean equalsAffine(AffineTransform transform)`
Returns `true` if this matrix is equals to the specified affine transform.
Since:
2.3
• #### clone

`public Matrix3 clone()`
Returns a clone of this matrix.
Specified by:
`clone` in interface `Matrix`
Overrides:
`clone` in class `Object`
Returns:
A clone of this matrix.
`Object.clone()`
• #### isAffine

`public final 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.
Specified by:
`isAffine` in interface `XMatrix`
Returns:
`true` if this matrix is affine.
• #### negate

`public void negate()`
Changes the sign of each element in the matrix.
Specified by:
`negate` in interface `XMatrix`
• #### negate

`public void negate(Matrix matrix)`
Description copied from interface: `XMatrix`
Negates the value of this matrix: `this = -matrix`.
Specified by:
`negate` in interface `XMatrix`
Parameters:
`matrix` - Matrix to negated
• #### transpose

`public void transpose()`
Transposes the matrix.
Specified by:
`transpose` in interface `XMatrix`
• #### transpose

`public void transpose(Matrix matrix)`
Description copied from interface: `XMatrix`
Set to the transpose of the provided matrix.
Specified by:
`transpose` in interface `XMatrix`
Parameters:
`matrix` - The original matrix. Not modified.
• #### invert

`public void invert()`
Description copied from interface: `XMatrix`
Inverts this matrix in place.
Specified by:
`invert` in interface `XMatrix`
• #### invert

```public void invert(Matrix matrix)
throws SingularMatrixException```
Description copied from interface: `XMatrix`
Set to the inverse of the provided matrix.
Specified by:
`invert` in interface `XMatrix`
Parameters:
`matrix` - The matrix that is to be inverted. Not modified.
Throws:
`SingularMatrixException` - if this matrix is not invertible.
• #### getElement

```public double getElement(int row,
int column)```
Returns the value at the row, column position in the matrix.
Specified by:
`getElement` in interface `XMatrix`
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:
Matrix value at the given row and column.
• #### setColumn

```public void setColumn(int column,
double... values)```
Description copied from interface: `XMatrix`
Sets the value of the column using an array of values.
Specified by:
`setColumn` in interface `XMatrix`
• #### setRow

```public void setRow(int row,
double... values)```
Description copied from interface: `XMatrix`
Sets the value of the row using an array of values.
Specified by:
`setRow` in interface `XMatrix`
• #### setElement

```public void setElement(int row,
int column,
double value)```
Sets the value of the row, column position in the matrix.
Specified by:
`setElement` in interface `Matrix`
Parameters:
`row` - The row number to be retrieved (zero indexed).
`column` - The column number to be retrieved (zero indexed).
`value` - The new matrix element value.
• #### setZero

`public void setZero()`
Sets each value of the matrix to 0.0.
Specified by:
`setZero` in interface `XMatrix`
• #### setIdentity

`public void setIdentity()`
Sets the main diagonal of this matrix to be 1.0.
Specified by:
`setIdentity` in interface `XMatrix`
• #### isIdentity

`public final boolean isIdentity()`
Returns `true` if this matrix is an identity matrix.
Specified by:
`isIdentity` in interface `Matrix`
Returns:
`true` if this matrix is an identity matrix.
• #### isIdentity

`public final 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`.
Specified by:
`isIdentity` in interface `XMatrix`
Parameters:
`tolerance` - The tolerance value.
Returns:
`true` if this matrix is close enough to the identity matrix given the tolerance value.
Since:
2.3.1
• #### multiply

`public final 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.
Specified by:
`multiply` in interface `XMatrix`
Parameters:
`matrix` - The matrix to multiply to this matrix.
• #### hashCode

`public int hashCode()`
Overrides:
`hashCode` in class `Object`
• #### equals

`public boolean equals(Object obj)`
Overrides:
`equals` in class `Object`
• #### equals

```public boolean equals(Matrix matrix,
double tolerance)```
Description copied from interface: `XMatrix`
Compares the element values.
Specified by:
`equals` in interface `XMatrix`
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.
• #### toAffineTransform2D

```public final AffineTransform toAffineTransform2D()
throws IllegalStateException```
Returns an affine transform for this matrix. This is a convenience method for interoperability with Java2D.
Returns:
The affine transform for this matrix.
Throws:
`IllegalStateException` - if this matrix is not 3×3, or if the last row is not `[0 0 1]`.
• #### toString

`public String toString()`
Returns a string representation of this matrix. The returned string is implementation dependent. It is usually provided for debugging purposes only.
Overrides:
`toString` in class `Object`
• #### getColumn

```public void getColumn(int col,
double[] array)```
Extract col to provided array.
Specified by:
`getColumn` in interface `XMatrix`
• #### mul

`public void mul(double scalar)`
Description copied from interface: `XMatrix`
Sets this matrix to the result of multiplying itself with the provided scalar.
Specified by:
`mul` in interface `XMatrix`
• #### mul

```public void mul(double scalar,
Matrix matrix)```
Description copied from interface: `XMatrix`
Sets the value of this matrix to the result of multiplying the provided scalar and matrix.
Specified by:
`mul` in interface `XMatrix`
• #### getRow

```public void getRow(int row,
double[] array)```
Extract row to provided array
Specified by:
`getRow` in interface `XMatrix`
• #### mul

`public final void mul(Matrix matrix)`
In-place multiply with provided matrix.
Specified by:
`mul` in interface `XMatrix`
Parameters:
`matrix` - The matrix to multiply to this matrix.
• #### mul

```public void mul(Matrix matrix1,
Matrix matrix2)```
In-place update from matrix1 * matrix2.
Specified by:
`mul` in interface `XMatrix`
• #### sub

`public void sub(double scalar)`
Description copied from interface: `XMatrix`
In-place matrix subtraction: `this - scalar`.
Specified by:
`sub` in interface `XMatrix`
• #### sub

```public void sub(double scalar,
Matrix matrix)```
Description copied from interface: `XMatrix`
Set to the difference of `scalar - matrix2`.
Specified by:
`sub` in interface `XMatrix`
`matrix` - matrix, not modified
• #### sub

`public void sub(Matrix matrix)`
Description copied from interface: `XMatrix`
In-place matrix subtraction: `this - matrix`.
Specified by:
`sub` in interface `XMatrix`
Parameters:
`matrix` - m by n matrix. Not modified.
• #### sub

```public void sub(Matrix matrix1,
Matrix matrix2)```
Description copied from interface: `XMatrix`
Set to the difference of `matrix1 - matrix2`.
Specified by:
`sub` in interface `XMatrix`
Parameters:
`matrix1` - matrix, not modified
`matrix2` - matrix, not modified
• #### set

`public void set(double[] matrix)`
Update in place to the provided matrix (row-order).

`public void add(double scalar)`
Description copied from interface: `XMatrix`
Specified by:
`add` in interface `XMatrix`
Parameters:
`scalar` - The value that's added to each element.

```public void add(double scalar,
XMatrix matrix)```
Description copied from interface: `XMatrix`
Set to the scalar addition of `scalar+matrix`
``` Specified by: add in interface XMatrix Parameters: scalar - The value that's added to each element. matrix - The matrix that is to be added. Not modified. ```
• ``` ```
``` add public void add(XMatrix matrix) Description copied from interface: XMatrix Set to the matrix addition of this+matrix. Specified by: add in interface XMatrix Parameters: matrix - The matrix that is to be added. Not modified. add public void add(XMatrix matrix1, XMatrix matrix2) Description copied from interface: XMatrix Set to the matrix addition of matrix1+matrix2. Specified by: add in interface XMatrix Parameters: matrix1 - First matrix to be added. Not modified. matrix2 - Second matrix to be added. Not modified. determinate public double determinate() Description copied from interface: XMatrix Computes the determinant Specified by: determinate in interface XMatrix ```
• ``` ```
``` ```
• ``` ```
``` ```
``` ```
``` Skip navigation links Overview Package Class Use Tree Deprecated Index Help Prev Class Next Class Frames No Frames All Classes <!-- allClassesLink = document.getElementById("allclasses_navbar_bottom"); if(window==top) { allClassesLink.style.display = "block"; } else { allClassesLink.style.display = "none"; } //--> Summary:  Nested |  Field |  Constr |  Method Detail:  Field |  Constr |  Method Copyright © 1996–2021 Geotools. All rights reserved. ```