Object
Matrix3
All Implemented Interfaces:
Serializable, Cloneable, Matrix, Cloneable, XMatrix

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

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

    Constructors
    Constructor
    Description
    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.
    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

    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 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.
    Returns a clone of this matrix.
    double
    Computes the determinant
    boolean
     
    boolean
    equals(Matrix matrix, double tolerance)
    Compares the element values.
    boolean
    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.
    final int
    Returns the number of colmuns in this matrix, which is always 3 in this implementation.
    final int
    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
     
    void
    Inverts this matrix in place.
    void
    invert(Matrix matrix)
    Set to the inverse of the provided matrix.
    final boolean
    Returns true if this matrix is an affine transform.
    final boolean
    Returns true if this matrix is an identity matrix.
    final boolean
    isIdentity(double tolerance)
    Returns true if this matrix is an identity matrix using the provided tolerance.
    final boolean
    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.
    final void
    mul(Matrix matrix)
    In-place multiply with provided matrix.
    void
    mul(Matrix matrix1, Matrix matrix2)
    In-place update from matrix1 * matrix2.
    final void
    multiply(Matrix matrix)
    Sets the value of this matrix to the result of multiplying itself with the specified matrix.
    void
    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
    Sets the main diagonal of this matrix to be 1.0.
    void
    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
    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.
    Returns an affine transform for this matrix.
    Returns a string representation of this matrix.
    void
    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 Details

  • Constructor Details

    • 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 Details

    • 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 Matrix
      Specified by:
      getNumRow in interface XMatrix
      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 Matrix
      Specified by:
      getNumCol in interface XMatrix
      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 Cloneable
      Specified by:
      clone in interface Matrix
      Overrides:
      clone in class Object
      Returns:
      A clone of this matrix.
      See Also:
    • 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 Matrix
      Specified by:
      getElement in interface XMatrix
      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).
    • add

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

      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