maspack.matrix
Class AffineTransform2dBase

java.lang.Object
  extended by maspack.matrix.MatrixBase
      extended by maspack.matrix.DenseMatrixBase
          extended by maspack.matrix.AffineTransform2dBase
All Implemented Interfaces:
DenseMatrix, LinearTransformNd, Matrix
Direct Known Subclasses:
AffineTransform2d, RigidTransform2d

public class AffineTransform2dBase
extends DenseMatrixBase

Base class for 3 x 3 matrices representing 2D affine transformations. A 2D affine transformation applied to a 2-vector v has the form
A v + b
In homogeneous coordinates, this is represented by a 3 x 3 matrix of the form

     [  A   p  ]
 M = [         ]
     [  0   1  ]
 


Nested Class Summary
 
Nested classes/interfaces inherited from interface maspack.matrix.Matrix
Matrix.Partition, Matrix.WriteFormat
 
Field Summary
 
Fields inherited from interface maspack.matrix.Matrix
INDEFINITE, POSITIVE_DEFINITE, SPD, SYMMETRIC
 
Constructor Summary
AffineTransform2dBase()
           
 
Method Summary
 int colSize()
          Returns the number of columns in this matrix (which is always 3).
 boolean epsilonEquals(AffineTransform2dBase X, double epsilon)
          Returns true if the elements of this transformation equal those of transform X1within a prescribed tolerance epsilon.
 boolean equals(AffineTransform2dBase X)
          Returns true if the elements of this transformation exactly equal those of transform X1.
 void get(double[] values)
          Copies the elements of this matrix into an array of doubles.
 double get(int i, int j)
          Gets a single element of this matrix.
 void getColumn(int j, double[] values)
          Copies a column of this matrix into an array of doubles.
 void getColumn(int j, double[] values, int off)
          Copies a column of this matrix into an array of doubles, starting at a specified offset.
 void getRow(int i, double[] values)
          Copies a row of this matrix into an array of doubles.
 void getRow(int i, double[] values, int off)
          Copies a row of this matrix into an array of doubles, starting at a specified offset.
 boolean invert()
          Inverts this transform in place.
 void mul(Vector3d vr)
          Multiplies the column vector vr by this transform and places the result back in vr.
 void mul(Vector3d vr, Vector3d v1)
          Multiplies the column vector v1 by this transform and places the result in vr.
 boolean mulInverse(Vector3d vr)
          Multiplies the column vector vr by the inverse of this transform and places the result back in vr.
 boolean mulInverse(Vector3d vr, Vector3d v1)
          Multiplies the column vector v1 by the inverse of this transform and places the result in vr.
 int rowSize()
          Returns the number of rows in this matrix (which is always 3).
 void set(double[] vals)
          Sets the elements of this matrix from an array of doubles.
 void set(int i, int j, double value)
          Sets a single element of this matrix.
 void set(RigidTransform2d X)
          Sets this affine transform to the rigid body transform described by X.
 void setColumn(int j, double[] values)
          Sets a column of this matrix from an array of doubles.
 void setIdentity()
          Sets the transformation to the identity.
 void setRow(int i, double[] values)
          Set a row of this matrix from an array of doubles.
 
Methods inherited from class maspack.matrix.DenseMatrixBase
add, checkConsistency, set, set, set, set, setCCSValues, setColumn, setCRSValues, setRow, setSubMatrix
 
Methods inherited from class maspack.matrix.MatrixBase
containsNaN, determinant, epsilonEquals, equals, frobeniusNorm, get, getCCSIndices, getCCSIndices, getCCSValues, getCCSValues, getColumn, getCRSIndices, getCRSIndices, getCRSValues, getCRSValues, getDefaultFormat, getRow, getSize, getSubMatrix, hasNaN, idString, infinityNorm, isFixedSize, isSymmetric, mul, mul, mul, mulAdd, mulAdd, mulAdd, mulTranspose, mulTranspose, mulTranspose, mulTransposeAdd, mulTransposeAdd, mulTransposeAdd, numNonZeroVals, numNonZeroVals, oneNorm, scan, setCRSValues, setDefaultFormat, setSize, toString, toString, toString, trace, write, write, write, write, write, writeToFile
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface maspack.matrix.Matrix
determinant, epsilonEquals, equals, frobeniusNorm, getCCSIndices, getCCSIndices, getCCSValues, getCCSValues, getColumn, getCRSIndices, getCRSIndices, getCRSValues, getCRSValues, getRow, getSize, getSubMatrix, infinityNorm, isFixedSize, isSymmetric, mul, mul, mul, mulAdd, mulAdd, mulAdd, mulTranspose, mulTranspose, mulTranspose, mulTransposeAdd, mulTransposeAdd, mulTransposeAdd, numNonZeroVals, numNonZeroVals, oneNorm, scan, setSize, toString, trace, write, write, write
 

Constructor Detail

AffineTransform2dBase

public AffineTransform2dBase()
Method Detail

colSize

public int colSize()
Returns the number of columns in this matrix (which is always 3).

Specified by:
colSize in interface LinearTransformNd
Specified by:
colSize in interface Matrix
Specified by:
colSize in class MatrixBase
Returns:
3

rowSize

public int rowSize()
Returns the number of rows in this matrix (which is always 3).

Specified by:
rowSize in interface LinearTransformNd
Specified by:
rowSize in interface Matrix
Specified by:
rowSize in class MatrixBase
Returns:
3

get

public double get(int i,
                  int j)
Gets a single element of this matrix.

Specified by:
get in interface Matrix
Specified by:
get in class MatrixBase
Parameters:
i - element row index
j - element column index
Returns:
element value

get

public void get(double[] values)
Copies the elements of this matrix into an array of doubles. The elements are stored using row-major order, so that element (i,j) is stored at location i*colSize()+j.

Specified by:
get in interface Matrix
Overrides:
get in class MatrixBase
Parameters:
values - array into which values are copied

getColumn

public void getColumn(int j,
                      double[] values)
Copies a column of this matrix into an array of doubles.

Specified by:
getColumn in interface Matrix
Overrides:
getColumn in class MatrixBase
Parameters:
j - column index
values - array into which the column is copied

getColumn

public void getColumn(int j,
                      double[] values,
                      int off)
Copies a column of this matrix into an array of doubles, starting at a specified offset.

Specified by:
getColumn in interface Matrix
Overrides:
getColumn in class MatrixBase
Parameters:
j - column index
values - array into which the column is copied
off - offset in values where copying should begin

getRow

public void getRow(int i,
                   double[] values)
Copies a row of this matrix into an array of doubles.

Specified by:
getRow in interface Matrix
Overrides:
getRow in class MatrixBase
Parameters:
i - row index
values - array into which the row is copied

getRow

public void getRow(int i,
                   double[] values,
                   int off)
Copies a row of this matrix into an array of doubles, starting at a specified offset.

Specified by:
getRow in interface Matrix
Overrides:
getRow in class MatrixBase
Parameters:
i - row index
values - array into which the row is copied
off - offset in values where copying should begin

set

public final void set(int i,
                      int j,
                      double value)
Sets a single element of this matrix.

Specified by:
set in interface DenseMatrix
Specified by:
set in class DenseMatrixBase
Parameters:
i - element row index
j - element column index
value - element value

set

public void set(double[] vals)
Sets the elements of this matrix from an array of doubles. The elements in the array should be stored using row-major order, so that element (i,j) is stored at location i*colSize()+j.

Specified by:
set in interface DenseMatrix
Overrides:
set in class DenseMatrixBase
Parameters:
vals - array from which values are copied

setColumn

public void setColumn(int j,
                      double[] values)
Sets a column of this matrix from an array of doubles.

Specified by:
setColumn in interface DenseMatrix
Overrides:
setColumn in class DenseMatrixBase
Parameters:
j - column index
values - array from which column values are copied

setRow

public void setRow(int i,
                   double[] values)
Set a row of this matrix from an array of doubles.

Specified by:
setRow in interface DenseMatrix
Overrides:
setRow in class DenseMatrixBase
Parameters:
i - row index
values - array from which the row is copied

set

public void set(RigidTransform2d X)
Sets this affine transform to the rigid body transform described by X.

Parameters:
X - rigid body transform to copy

setIdentity

public void setIdentity()
Sets the transformation to the identity.


mul

public void mul(Vector3d vr,
                Vector3d v1)
Multiplies the column vector v1 by this transform and places the result in vr.

Parameters:
vr - result vector
v1 - vector to multiply

mul

public void mul(Vector3d vr)
Multiplies the column vector vr by this transform and places the result back in vr.

Parameters:
vr - vector to multiply (in place)

mulInverse

public boolean mulInverse(Vector3d vr,
                          Vector3d v1)
Multiplies the column vector v1 by the inverse of this transform and places the result in vr.

Parameters:
vr - result vector
v1 - vector to multiply
Returns:
false if this transform is singular

mulInverse

public boolean mulInverse(Vector3d vr)
Multiplies the column vector vr by the inverse of this transform and places the result back in vr.

Parameters:
vr - vector to multiply (in place)
Returns:
false if this transform is singular

invert

public boolean invert()
Inverts this transform in place.

Returns:
false if this transform is singular

epsilonEquals

public boolean epsilonEquals(AffineTransform2dBase X,
                             double epsilon)
Returns true if the elements of this transformation equal those of transform X1within a prescribed tolerance epsilon.

Parameters:
X - transform to compare with
epsilon - comparison tolerance
Returns:
false if the transforms are not equal within the specified tolerance

equals

public boolean equals(AffineTransform2dBase X)
Returns true if the elements of this transformation exactly equal those of transform X1.

Parameters:
X - transform to compare with
Returns:
false if the transforms are not equal