|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectmaspack.matrix.MatrixBase
maspack.matrix.DenseMatrixBase
maspack.matrix.AffineTransform3dBase
public abstract class AffineTransform3dBase
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 ]
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 | |
---|---|
AffineTransform3dBase()
|
Method Summary | |
---|---|
AffineTransform3dBase |
clone()
|
int |
colSize()
Returns the number of columns in this matrix (which is always 4). |
boolean |
epsilonEquals(AffineTransform3dBase X,
double epsilon)
Returns true if the elements of this transformation equal those of transform X1 within a prescribed tolerance
epsilon . |
boolean |
equals(AffineTransform3dBase 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. |
Matrix3dBase |
getMatrix()
Returns the matrix assiciated with this affine transform. |
void |
getMatrixComponents(RotationMatrix3d R,
Vector3d s,
Matrix3d X)
Returns the shear, scaling, and rotational components of this AffineTransform. |
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. |
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. |
boolean |
isIdentity()
Returns true if this transform equals the identity. |
void |
leftRigidFactor(AffineTransform3d XS,
RigidTransform3d XR)
Factors this affine transform into the product of a stretch-shear transform (with no translation) and a rigid transform: |
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(AffineTransform3dBase A)
|
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 |
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.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 |
---|
public AffineTransform3dBase()
Method Detail |
---|
public Matrix3dBase getMatrix()
public Vector3d getOffset()
public int colSize()
colSize
in interface LinearTransformNd
colSize
in interface Matrix
colSize
in class MatrixBase
public int rowSize()
rowSize
in interface LinearTransformNd
rowSize
in interface Matrix
rowSize
in class MatrixBase
public double get(int i, int j)
get
in interface Matrix
get
in class MatrixBase
i
- element row indexj
- element column index
public void get(double[] values)
(i,j)
is
stored at location i*colSize()+j
.
get
in interface Matrix
get
in class MatrixBase
values
- array into which values are copiedpublic void getColumn(int j, double[] values)
getColumn
in interface Matrix
getColumn
in class MatrixBase
j
- column indexvalues
- array into which the column is copiedpublic void getColumn(int j, double[] values, int off)
getColumn
in interface Matrix
getColumn
in class MatrixBase
j
- column indexvalues
- array into which the column is copiedoff
- offset in values where copying should beginpublic void getRow(int i, double[] values)
getRow
in interface Matrix
getRow
in class MatrixBase
i
- row indexvalues
- array into which the row is copiedpublic void getRow(int i, double[] values, int off)
getRow
in interface Matrix
getRow
in class MatrixBase
i
- row indexvalues
- array into which the row is copiedoff
- offset in values where copying should beginpublic final void set(AffineTransform3dBase A)
public void set(int i, int j, double value)
set
in interface DenseMatrix
set
in class DenseMatrixBase
i
- element row indexj
- element column indexvalue
- element valuepublic void set(double[] vals)
(i,j)
is stored at location i*colSize()+j
.
set
in interface DenseMatrix
set
in class DenseMatrixBase
vals
- array from which values are copiedpublic void setColumn(int j, double[] values)
setColumn
in interface DenseMatrix
setColumn
in class DenseMatrixBase
j
- column indexvalues
- array from which column values are copiedpublic void setRow(int i, double[] values)
setRow
in interface DenseMatrix
setRow
in class DenseMatrixBase
i
- row indexvalues
- array from which the row is copiedpublic void setTranslation(Vector3d p)
p
- translation vectorpublic void setRotation(AxisAngle axisAng)
axisAng
- axis-angle describing the rotationpublic void setRotation(Quaternion quat)
quat
- quaternion describing the rotationpublic void setRotation(RotationMatrix3d R)
R
- rotation matrixpublic void setIdentity()
public void mul(Vector4d vr, Vector4d v1)
vr
- result vectorv1
- vector to multiplypublic void mul(Vector4d vr)
vr
- vector to multiply (in place)public boolean mulInverse(Vector4d vr, Vector4d v1)
vr
- result vectorv1
- vector to multiply
public boolean mulInverse(Vector4d vr)
vr
- vector to multiply (in place)
public boolean invert()
public boolean epsilonEquals(AffineTransform3dBase X, double epsilon)
X1
within a prescribed tolerance
epsilon
.
X
- transform to compare withepsilon
- comparison tolerance
public boolean equals(AffineTransform3dBase X)
X1
.
X
- transform to compare with
public void getMatrixComponents(RotationMatrix3d R, Vector3d s, Matrix3d X)
M = U S V'The rotation is then set to U, the scale factors are set to the diagonal elements of S, and the shear is set to U'.
R
- returns the rotation matrixs
- returns the three scaling factorsX
- returns the shearing transformpublic void leftRigidFactor(AffineTransform3d XS, RigidTransform3d XR)
this = XS XR
XS
- returns the stretch-shear transform (optional argument)XR
- returns the rigid transform (optional argument)public boolean isIdentity()
public AffineTransform3dBase clone()
clone
in interface Clonable
clone
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |