org.geotools.referencing.operation.matrix
Class GeneralMatrix

java.lang.Object
  extended byjavax.vecmath.GMatrix
      extended byorg.geotools.referencing.operation.matrix.GeneralMatrix
All Implemented Interfaces:
org.opengis.util.Cloneable, java.lang.Cloneable, org.opengis.referencing.operation.Matrix, java.io.Serializable, XMatrix
Direct Known Subclasses:
GeneralMatrix

public class GeneralMatrix
extends javax.vecmath.GMatrix
implements XMatrix

A two dimensional array of numbers. Row and column numbering begins with zero.

Since:
2.2
Version:
$Id: GeneralMatrix.java 17964 2006-02-10 11:27:41Z desruisseaux $
Author:
Martin Desruisseaux
See Also:
GMatrix, AffineTransform, PerspectiveTransform, javax.media.j3d.Transform3D, Jama matrix, JSR-83 Multiarray package, Serialized Form

Constructor Summary
GeneralMatrix(java.awt.geom.AffineTransform transform)
          Constructs a 3×3 matrix from the specified affine transform.
GeneralMatrix(org.opengis.referencing.cs.AxisDirection[] srcAxis, org.opengis.referencing.cs.AxisDirection[] dstAxis)
          Constructs a transform changing axis order and/or direction.
GeneralMatrix(double[][] matrix)
          Constructs a new matrix from a two-dimensional array of doubles.
GeneralMatrix(org.opengis.spatialschema.geometry.Envelope srcRegion, org.opengis.referencing.cs.AxisDirection[] srcAxis, org.opengis.spatialschema.geometry.Envelope dstRegion, org.opengis.referencing.cs.AxisDirection[] dstAxis)
          Constructs a transform mapping a source region to a destination region.
GeneralMatrix(org.opengis.spatialschema.geometry.Envelope srcRegion, org.opengis.spatialschema.geometry.Envelope dstRegion)
          Constructs a transform that maps a source region to a destination region.
GeneralMatrix(javax.vecmath.GMatrix matrix)
          Constructs a new matrix and copies the initial values from the parameter matrix.
GeneralMatrix(int size)
          Constructs a square identity matrix of size  × .
GeneralMatrix(int numRow, int numCol)
          Creates a matrix of size  × .
GeneralMatrix(int numRow, int numCol, double[] matrix)
          Constructs a  ×  matrix initialized to the values in the array.
GeneralMatrix(org.opengis.referencing.operation.Matrix matrix)
          Constructs a new matrix and copies the initial values from the parameter matrix.
 
Method Summary
 double[][] getElements()
          Retrieves the specifiable values in the transformation matrix into a 2-dimensional array of double precision values.
static double[][] getElements(org.opengis.referencing.operation.Matrix matrix)
          Retrieves the specifiable values in the transformation matrix into a 2-dimensional array of double precision values.
 boolean isAffine()
          Returns 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.
 boolean isIdentity()
          Returns if this matrix is an identity matrix.
static GeneralMatrix load(java.io.BufferedReader in, java.util.Locale locale)
          Loads data from the specified streal until the first blank line or end of stream.
static GeneralMatrix load(java.io.File file)
          Loads data from the specified file until the first blank line or end of file.
 void multiply(org.opengis.referencing.operation.Matrix matrix)
          Sets the value of this matrix to the result of multiplying itself with the specified matrix. In other words, performs = × . 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.
 java.awt.geom.AffineTransform toAffineTransform2D()
          Returns an affine transform for this matrix.
 java.lang.String toString()
          Returns a string representation of this matrix.
 
Methods inherited from class javax.vecmath.GMatrix
add, add, clone, copySubMatrix, epsilonEquals, epsilonEquals, equals, equals, get, get, get, get, get, getColumn, getColumn, getElement, getNumCol, getNumRow, getRow, getRow, hashCode, identityMinus, invert, invert, LUD, mul, mul, mul, mulTransposeBoth, mulTransposeLeft, mulTransposeRight, negate, negate, set, set, set, set, set, set, setColumn, setColumn, setElement, setIdentity, setRow, setRow, setScale, setSize, setZero, sub, sub, SVD, trace, transpose, transpose
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.geotools.referencing.operation.matrix.XMatrix
invert, negate, setIdentity, setZero, transpose
 
Methods inherited from interface org.opengis.referencing.operation.Matrix
clone, getElement, getNumCol, getNumRow, setElement
 

Constructor Detail

GeneralMatrix

public GeneralMatrix(int size)
Constructs a square identity matrix of size  × .


GeneralMatrix

public GeneralMatrix(int numRow,
                     int numCol)
Creates a matrix of size  × . Elements on the diagonal j==i are set to 1.


GeneralMatrix

public GeneralMatrix(int numRow,
                     int numCol,
                     double[] matrix)
Constructs a  ×  matrix initialized to the values in the array. The array values are copied in one row at a time in row major fashion. The array should be exactly numRow*numCol in length. Note that because row and column numbering begins with zero, and will be one larger than the maximum possible matrix index values.


GeneralMatrix

public GeneralMatrix(double[][] matrix)
              throws java.lang.IllegalArgumentException
Constructs a new matrix from a two-dimensional array of doubles.

Parameters:
matrix - Array of rows. Each row must have the same length.
Throws:
java.lang.IllegalArgumentException - if the specified matrix is not regular (i.e. if all rows doesn't have the same length).

GeneralMatrix

public GeneralMatrix(org.opengis.referencing.operation.Matrix matrix)
Constructs a new matrix and copies the initial values from the parameter matrix.


GeneralMatrix

public GeneralMatrix(javax.vecmath.GMatrix matrix)
Constructs a new matrix and copies the initial values from the parameter matrix.


GeneralMatrix

public GeneralMatrix(java.awt.geom.AffineTransform transform)
Constructs a 3×3 matrix from the specified affine transform.


GeneralMatrix

public GeneralMatrix(org.opengis.spatialschema.geometry.Envelope srcRegion,
                     org.opengis.spatialschema.geometry.Envelope dstRegion)
Constructs a transform that maps a source region to a destination region. Axis order and direction are left unchanged.

If the source dimension is equals to the destination dimension, then the transform is affine. However, the following special cases are also handled:

Parameters:
srcRegion - The source region.
dstRegion - The destination region.

GeneralMatrix

public GeneralMatrix(org.opengis.referencing.cs.AxisDirection[] srcAxis,
                     org.opengis.referencing.cs.AxisDirection[] dstAxis)
Constructs a transform changing axis order and/or direction. For example, the transform may converts (NORTH,WEST) coordinates into (EAST,NORTH). Axis direction can be inversed only. For example, it is illegal to transform (NORTH,WEST) coordinates into (NORTH,DOWN).

If the source dimension is equals to the destination dimension, then the transform is affine. However, the following special cases are also handled:


Parameters:
srcAxis - The set of axis direction for source coordinate system.
dstAxis - The set of axis direction for destination coordinate system.
Throws:
java.lang.IllegalArgumentException - If contains some axis not found in , or if some colinear axis were found.

GeneralMatrix

public GeneralMatrix(org.opengis.spatialschema.geometry.Envelope srcRegion,
                     org.opengis.referencing.cs.AxisDirection[] srcAxis,
                     org.opengis.spatialschema.geometry.Envelope dstRegion,
                     org.opengis.referencing.cs.AxisDirection[] dstAxis)
Constructs a transform mapping a source region to a destination region. Axis order and/or direction can be changed during the process. For example, the transform may convert (NORTH,WEST) coordinates into (EAST,NORTH). Axis direction can be inversed only. For example, it is illegal to transform (NORTH,WEST) coordinates into (NORTH,DOWN).

If the source dimension is equals to the destination dimension, then the transform is affine. However, the following special cases are also handled:


Parameters:
srcRegion - The source region.
srcAxis - Axis direction for each dimension of the source region.
dstRegion - The destination region.
dstAxis - Axis direction for each dimension of the destination region.
Throws:
org.opengis.spatialschema.geometry.MismatchedDimensionException - if the envelope dimension doesn't matches the axis direction array length.
java.lang.IllegalArgumentException - If contains some axis not found in , or if some colinear axis were found.
Method Detail

getElements

public static double[][] getElements(org.opengis.referencing.operation.Matrix matrix)
Retrieves the specifiable values in the transformation matrix into a 2-dimensional array of double precision values. The values are stored into the 2-dimensional array using the row index as the first subscript and the column index as the second. Values are copied; changes to the returned array will not change this matrix.


getElements

public final double[][] getElements()
Retrieves the specifiable values in the transformation matrix into a 2-dimensional array of double precision values. The values are stored into the 2-dimensional array using the row index as the first subscript and the column index as the second. Values are copied; changes to the returned array will not change this matrix.


isAffine

public final boolean isAffine()
Returns 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

isIdentity

public final boolean isIdentity()
Returns if this matrix is an identity matrix.

Specified by:
isIdentity in interface org.opengis.referencing.operation.Matrix

multiply

public final void multiply(org.opengis.referencing.operation.Matrix matrix)
Sets the value of this matrix to the result of multiplying itself with the specified matrix. In other words, performs = × . 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

toAffineTransform2D

public final java.awt.geom.AffineTransform toAffineTransform2D()
                                                        throws java.lang.IllegalStateException
Returns an affine transform for this matrix. This is a convenience method for interoperability with Java2D.

Throws:
java.lang.IllegalStateException - if this matrix is not 3×3, or if the last row is not .

load

public static GeneralMatrix load(java.io.File file)
                          throws java.io.IOException
Loads data from the specified file until the first blank line or end of file.

Parameters:
file - The file to read.
Returns:
The matrix parsed from the file.
Throws:
java.io.IOException - if an error occured while reading the file.
Since:
2.2

load

public static GeneralMatrix load(java.io.BufferedReader in,
                                 java.util.Locale locale)
                          throws java.io.IOException
Loads data from the specified streal until the first blank line or end of stream.

Parameters:
in - The stream to read.
locale - The locale for the numbers to be parsed.
Returns:
The matrix parsed from the stream.
Throws:
java.io.IOException - if an error occured while reading the stream.
Since:
2.2

toString

public java.lang.String toString()
Returns a string representation of this matrix. The returned string is implementation dependent. It is usually provided for debugging purposes only.



Copyright © GeoTools. All Rights Reserved.