Object
MatrixSIS
Matrix4
All Implemented Interfaces:
Serializable, Cloneable, Lenient­Comparable, Matrix

public class Matrix4 extends MatrixSIS
A matrix of fixed 4×4 size, often used in datum shifts. The matrix members are:
 ┌                 ┐
 │ m00 m01 m02 m03 │
 │ m10 m11 m12 m13 │
 │ m20 m21 m22 m23 │
 │ m30 m31 m32 m33 │
 └                 ┘
Since:
0.4
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    double
    The first matrix element in the first row.
    double
    The second matrix element in the first row.
    double
    The third matrix element in the first row.
    double
    The forth matrix element in the first row.
    double
    The first matrix element in the second row.
    double
    The second matrix element in the second row.
    double
    The third matrix element in the second row.
    double
    The forth matrix element in the second row.
    double
    The first matrix element in the third row.
    double
    The second matrix element in the third row.
    double
    The third matrix element in the third row.
    double
    The forth matrix element in the third row.
    double
    The first matrix element in the forth row.
    double
    The second matrix element in the forth row.
    double
    The third matrix element in the forth row.
    double
    The forth matrix element in the forth row.
    static final int
    The matrix size, which is 4.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new identity matrix.
    Matrix4(double[] elements)
    Creates a new matrix initialized to the specified values.
    Matrix4(double m00, double m01, double m02, double m03, double m10, double m11, double m12, double m13, double m20, double m21, double m22, double m23, double m30, double m31, double m32, double m33)
    Creates a new matrix initialized to the specified values.
  • Method Summary

    Modifier and Type
    Method
    Description
    static Matrix4
    Casts or copies the given matrix to a Matrix4 implementation.
    Returns a clone of this matrix.
    final double
    get­Element(int row, int column)
    Retrieves the value at the specified row and column of this matrix.
    final double[]
    Returns all matrix elements in a flat, row-major (column indices vary fastest) array.
    final int
    Returns the number of columns in this matrix, which is always 4 in this implementation.
    final int
    Returns the number of rows in this matrix, which is always 4 in this implementation.
    final boolean
    Returns true if this matrix represents an affine transform.
    final boolean
    Returns true if this matrix is an identity matrix.
    final void
    set­Element(int row, int column, double value)
    Modifies the value at the specified row and column of this matrix.
    final void
    set­Elements(double[] elements)
    Sets all matrix elements from a flat, row-major (column indices vary fastest) array.
    void
    Sets the value of this matrix to its transpose.

    Methods inherited from class Object

    finalize, get­Class, notify, notify­All, wait, wait, wait
  • Field Details

    • SIZE

      public static final int SIZE
      The matrix size, which is 4.
      See Also:
    • m00

      public double m00
      The first matrix element in the first row.
    • m01

      public double m01
      The second matrix element in the first row.
    • m02

      public double m02
      The third matrix element in the first row.
    • m03

      public double m03
      The forth matrix element in the first row.
    • m10

      public double m10
      The first matrix element in the second row.
    • m11

      public double m11
      The second matrix element in the second row.
    • m12

      public double m12
      The third matrix element in the second row.
    • m13

      public double m13
      The forth matrix element in the second row.
    • m20

      public double m20
      The first matrix element in the third row.
    • m21

      public double m21
      The second matrix element in the third row.
    • m22

      public double m22
      The third matrix element in the third row.
    • m23

      public double m23
      The forth matrix element in the third row.
    • m30

      public double m30
      The first matrix element in the forth row.
    • m31

      public double m31
      The second matrix element in the forth row.
    • m32

      public double m32
      The third matrix element in the forth row.
    • m33

      public double m33
      The forth matrix element in the forth row.
  • Constructor Details

    • Matrix4

      public Matrix4()
      Creates a new identity matrix.
    • Matrix4

      public Matrix4(double m00, double m01, double m02, double m03, double m10, double m11, double m12, double m13, double m20, double m21, double m22, double m23, double m30, double m31, double m32, double m33)
      Creates a new matrix initialized to the specified values.
      Parameters:
      m00 - the first matrix element in the first row.
      m01 - the second matrix element in the first row.
      m02 - the third matrix element in the first row.
      m03 - the forth matrix element in the first row.
      m10 - the first matrix element in the second row.
      m11 - the second matrix element in the second row.
      m12 - the third matrix element in the second row.
      m13 - the forth matrix element in the second row.
      m20 - the first matrix element in the third row.
      m21 - the second matrix element in the third row.
      m22 - the third matrix element in the third row.
      m23 - the forth matrix element in the third row.
      m30 - the first matrix element in the forth row.
      m31 - the second matrix element in the forth row.
      m32 - the third matrix element in the forth row.
      m33 - the forth matrix element in the forth row.
    • Matrix4

      public Matrix4(double[] elements) throws IllegalArgumentException
      Creates a new matrix initialized to the specified values. The length of the given array must be 16 and the values in the same order than the above constructor.
      Parameters:
      elements - elements of the matrix. Column indices vary fastest.
      Throws:
      Illegal­Argument­Exception - if the given array does not have the expected length.
      See Also:
  • Method Details

    • castOrCopy

      public static Matrix4 castOrCopy(Matrix matrix) throws MismatchedMatrixSizeException
      Casts or copies the given matrix to a Matrix4 implementation. If the given matrix is already an instance of Matrix4, then it is returned unchanged. Otherwise this method verifies the matrix size, then copies all elements in a new Matrix4 object.
      Parameters:
      matrix - the matrix to cast or copy, or null.
      Returns:
      the matrix argument if it can be safely casted (including null argument), or a copy of the given matrix otherwise.
      Throws:
      Mismatched­Matrix­Size­Exception - if the size of the given matrix is not 4×4.
    • getNumRow

      public final int getNumRow()
      Returns the number of rows in this matrix, which is always 4 in this implementation.
      Returns:
      always 4.
    • getNumCol

      public final int getNumCol()
      Returns the number of columns in this matrix, which is always 4 in this implementation.
      Returns:
      always 4.
    • getElement

      public final double getElement(int row, int column)
      Retrieves the value at the specified row and column of this matrix. This method can be invoked when the matrix size or type is unknown. If the matrix is known to be an instance of Matrix4, then the m00m33 fields can be read directly for efficiency.
      Parameters:
      row - the row index, from 0 inclusive to 4 exclusive.
      column - the column index, from 0 inclusive to 4 exclusive.
      Returns:
      the current value at the given row and column.
    • setElement

      public final void setElement(int row, int column, double value)
      Modifies the value at the specified row and column of this matrix. This method can be invoked when the matrix size or type is unknown. If the matrix is known to be an instance of Matrix4, then the m00m33 fields can be set directly for efficiency.
      Parameters:
      row - the row index, from 0 inclusive to 4 exclusive.
      column - the column index, from 0 inclusive to 4 exclusive.
      value - the new value to set at the given row and column.
    • getElements

      public final double[] getElements()
      Returns all matrix elements in a flat, row-major (column indices vary fastest) array. The array length is 16.
      Overrides:
      get­Elements in class Matrix­SIS
      Returns:
      a copy of all current matrix elements in a row-major array.
    • setElements

      public final void setElements(double[] elements)
      Sets all matrix elements from a flat, row-major (column indices vary fastest) array. The array length shall be 16.
      Overrides:
      set­Elements in class Matrix­SIS
      Parameters:
      elements - The new matrix elements in a row-major array.
      See Also:
    • isAffine

      public final boolean isAffine()
      Returns true if this matrix represents an affine transform. A transform is affine if the matrix is square and its last row contains only zeros, except in the last column which contains 1.
      Overrides:
      is­Affine in class Matrix­SIS
      Returns:
      true if this matrix represents an affine transform.
      See Also:
    • isIdentity

      public final boolean isIdentity()
      Returns true if this matrix is an identity matrix. This method is equivalent to the following code, except that it is potentially more efficient:
      return Matrices.isIdentity(this, 0.0);
      
      Specified by:
      is­Identity in interface Matrix
      Specified by:
      is­Identity in class Matrix­SIS
      Returns:
      true if this matrix is an identity matrix.
      See Also:
    • transpose

      public void transpose()
      Sets the value of this matrix to its transpose.
      Specified by:
      transpose in class Matrix­SIS
    • clone

      public Matrix4 clone()
      Returns a clone of this matrix.
      Specified by:
      clone in interface Matrix
      Overrides:
      clone in class Matrix­SIS
      Returns:
      a new matrix of the same class and with the same values than this matrix.
      See Also: