maspack.matrix
Class AffineTransform3dObject

java.lang.Object
  extended bymaspack.matrix.MatrixObject
      extended bymaspack.matrix.AffineTransform3dObject
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
AffineTransform3d, RigidTransform3d

public class AffineTransform3dObject
extends MatrixObject
implements java.io.Serializable

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

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

See Also:
Serialized Form

Constructor Summary
AffineTransform3dObject()
           
 
Method Summary
 int colSize()
          Returns the number of columns in this matrix (which is always 4).
 boolean epsilonEquals(AffineTransform3dObject X, double epsilon)
          Returns true if the elements of this transformation equal those of transform X1within a prescribed tolerance epsilon.
 boolean equals(AffineTransform3dObject 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. The elements are stored using row-major order, so that element (i,j) is stored at location i*colSize()+j.
 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.
 Matrix3dObject getMatrix()
          Returns the matrix assiciated with this affine transform.
 Vector3d getOffset()
          Returns the offset vector assiciated with this affine transform.
 void getRow(int i, double[] values)
          Copies a row of this matrix into an array of doubles.
 boolean invert()
          Inverts this transform in place.
 void mul(Vector4d vr)
          Multiplies the column vector vr by this transform and places the result back in vr.
 void mul(Vector4d vr, Vector4d v1)
          Multiplies the column vector v1 by this transform and places the result in vr.
 boolean mulInverse(Vector4d vr)
          Multiplies the column vector vr by the inverse of this transform and places the result back in vr.
 boolean mulInverse(Vector4d vr, Vector4d 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 4).
 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.
 void set(int i, int j, double value)
          Sets a single element of this matrix.
 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 setRotation(AxisAngle axisAng)
          Sets the matrix component of this affine transform to an explicit rotation.
 void setRotation(Quaternion quat)
          Sets the matrix component of this affine transform to an explicit rotation.
 void setRotation(RotationMatrix3d R)
          Sets the matrix component of this affine transform to an explicit rotation.
 void setRow(int i, double[] values)
          Set a row of this matrix from an array of doubles.
 void setTranslation(Vector3d p)
          Sets the translation component of this affine transform.
 
Methods inherited from class maspack.matrix.MatrixObject
determinant, epsilonEquals, equals, equals, frobeniusNorm, get, getColumn, getRow, infinityNorm, isFixedSize, oneNorm, scan, set, set, setColumn, setRow, setSize, toString, toString, toString
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AffineTransform3dObject

public AffineTransform3dObject()
Method Detail

getMatrix

public Matrix3dObject getMatrix()
Returns the matrix assiciated with this affine transform.

Returns:
matrix

getOffset

public Vector3d getOffset()
Returns the offset vector assiciated with this affine transform.

Returns:
offset vector

colSize

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

Specified by:
colSize in class MatrixObject
Returns:
4

rowSize

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

Specified by:
rowSize in class MatrixObject
Returns:
4

get

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

Specified by:
get in class MatrixObject
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.

Overrides:
get in class MatrixObject
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.

Overrides:
getColumn in class MatrixObject
Parameters:
j - column index
values - array into which the column is copied

getRow

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

Overrides:
getRow in class MatrixObject
Parameters:
i - row index
values - array into which the row is copied

set

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

Specified by:
set in class MatrixObject
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.

Overrides:
set in class MatrixObject
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.

Overrides:
setColumn in class MatrixObject
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.

Overrides:
setRow in class MatrixObject
Parameters:
i - row index
values - array from which the row is copied

setTranslation

public void setTranslation(Vector3d p)
Sets the translation component of this affine transform.

Parameters:
p - translation vector

setRotation

public void setRotation(AxisAngle axisAng)
Sets the matrix component of this affine transform to an explicit rotation.

Parameters:
axisAng - axis-angle describing the rotation

setRotation

public void setRotation(Quaternion quat)
Sets the matrix component of this affine transform to an explicit rotation.

Parameters:
quat - quaternion describing the rotation

setRotation

public void setRotation(RotationMatrix3d R)
Sets the matrix component of this affine transform to an explicit rotation.

Parameters:
R - rotation matrix

setIdentity

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


mul

public void mul(Vector4d vr,
                Vector4d 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(Vector4d 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(Vector4d vr,
                          Vector4d 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(Vector4d 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(AffineTransform3dObject 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(AffineTransform3dObject 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