Class Matrix3
- Object
-
- Matrix3
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Matrix
,Cloneable
,XMatrix
public class Matrix3 extends Object implements XMatrix, Serializable
- Since:
- 2.2
- Author:
- Martin Desruisseaux (IRD)
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static int
SIZE
The matrix size, which is 3.
-
Constructor Summary
Constructors Constructor Description Matrix3()
Creates a new identity matrix.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(AffineTransform transform)
Constructs a 3×3 matrix from the specified affine transform.Matrix3(Matrix matrix)
Creates a new matrix initialized to the same value than the specified one.
-
Method Summary
All Methods Instance Methods Concrete 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
.Matrix3
clone()
Returns a clone of this matrix.double
determinate()
Computes the determinantboolean
equals(Object obj)
boolean
equals(Matrix matrix, double tolerance)
Compares the element values.boolean
equalsAffine(AffineTransform transform)
Returnstrue
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 arrayint
hashCode()
void
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()
Returnstrue
if this matrix is an identity matrix.boolean
isIdentity(double tolerance)
Returnstrue
if this matrix is an identity matrix using the provided tolerance.boolean
isNaN()
Returnstrue
if at least one value isNaN
.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 ofscalar - matrix2
.void
sub(Matrix matrix)
In-place matrix subtraction:this - matrix
.void
sub(Matrix matrix1, Matrix matrix2)
Set to the difference ofmatrix1 - 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.
-
-
-
Field Detail
-
SIZE
public static final int SIZE
The matrix size, which is 3.- See Also:
- 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)
-
-
Method Detail
-
getNumRow
public final int getNumRow()
Returns the number of rows in this matrix, which is always 3 in this implementation.
-
getNumCol
public final int getNumCol()
Returns the number of colmuns in this matrix, which is always 3 in this implementation.
-
isNaN
public final boolean isNaN()
Returnstrue
if at least one value isNaN
.- 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)
Returnstrue
if this matrix is equals to the specified affine transform.- Since:
- 2.3
-
clone
public Matrix3 clone()
Returns a clone of this matrix.
-
isAffine
public final 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.
-
negate
public void negate()
Changes the sign of each element in the matrix.
-
negate
public void negate(Matrix matrix)
Description copied from interface:XMatrix
Negates the value of this matrix:this = -matrix
.
-
transpose
public void transpose()
Transposes the matrix.
-
transpose
public void transpose(Matrix matrix)
Description copied from interface:XMatrix
Set to the transpose of the provided matrix.
-
invert
public void invert()
Description copied from interface:XMatrix
Inverts this matrix in place.
-
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 interfaceXMatrix
- 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 interfaceMatrix
- Specified by:
getElement
in interfaceXMatrix
- 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.
-
setRow
public void setRow(int row, double... values)
Description copied from interface:XMatrix
Sets the value of the row using an array of values.
-
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 interfaceMatrix
- 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.
-
setIdentity
public void setIdentity()
Sets the main diagonal of this matrix to be 1.0.- Specified by:
setIdentity
in interfaceXMatrix
-
isIdentity
public final boolean isIdentity()
Returnstrue
if this matrix is an identity matrix.- Specified by:
isIdentity
in interfaceMatrix
- Returns:
true
if this matrix is an identity matrix.
-
isIdentity
public final 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
.- Specified by:
isIdentity
in interfaceXMatrix
- 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, 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.
-
equals
public boolean equals(Matrix matrix, double tolerance)
Description copied from interface:XMatrix
Compares the element values.
-
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.
-
getColumn
public void getColumn(int col, double[] array)
Extract col to provided array.
-
mul
public void mul(double scalar)
Description copied from interface:XMatrix
Sets this matrix to the result of multiplying itself with the provided scalar.
-
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.
-
getRow
public void getRow(int row, double[] array)
Extract row to provided array
-
mul
public final void mul(Matrix matrix)
In-place multiply with provided matrix.
-
sub
public void sub(double scalar)
Description copied from interface:XMatrix
In-place matrix subtraction:this - scalar
.
-
sub
public void sub(double scalar, Matrix matrix)
Description copied from interface:XMatrix
Set to the difference ofscalar - matrix2
.
-
sub
public void sub(Matrix matrix)
Description copied from interface:XMatrix
In-place matrix subtraction:this - matrix
.
-
sub
public void sub(Matrix matrix1, Matrix matrix2)
Description copied from interface:XMatrix
Set to the difference ofmatrix1 - matrix2
.
-
set
public void set(double[] matrix)
Update in place to the provided matrix (row-order).
-
add
public void add(double scalar)
Description copied from interface:XMatrix
Performs an in-place scalar addition.
-
add
public void add(double scalar, XMatrix matrix)
Description copied from interface:XMatrix
Set to the scalar addition ofscalar+matrix
-
add
public void add(XMatrix matrix)
Description copied from interface:XMatrix
Set to the matrix addition ofthis+matrix
.
-
add
public void add(XMatrix matrix1, XMatrix matrix2)
Description copied from interface:XMatrix
Set to the matrix addition ofmatrix1+matrix2
.
-
determinate
public double determinate()
Description copied from interface:XMatrix
Computes the determinant- Specified by:
determinate
in interfaceXMatrix
-
-