public class AffineTransformation extends Object
Modifier and Type | Field and Description |
---|---|
private int |
dim
the dimensionality of the transformation
|
private Matrix |
inv
the inverse transformation
|
private Matrix |
trans
The transformation matrix of dim+1 x dim+1 for homogeneous coordinates
|
Constructor and Description |
---|
AffineTransformation(int dim)
Constructor for an identity transformation.
|
AffineTransformation(int dim,
Matrix trans,
Matrix inv)
Trivial constructor with all fields, mostly for cloning
|
Modifier and Type | Method and Description |
---|---|
void |
addAxisReflection(int axis)
Add a reflection along the given axis.
|
void |
addMatrix(Matrix m)
Add a matrix operation to the matrix.
|
void |
addRotation(int axis1,
int axis2,
double angle)
Convenience function to apply a rotation in 2 dimensions.
|
void |
addScaling(double scale)
Simple linear (symmetric) scaling.
|
void |
addTranslation(Vector v)
Add a translation operation to the matrix
|
double[] |
apply(double[] v)
Apply the transformation onto a vector
|
Vector |
apply(Vector v)
Apply the transformation onto a vector
|
double[] |
applyInverse(double[] v)
Apply the inverse transformation onto a vector
|
Vector |
applyInverse(Vector v)
Apply the inverse transformation onto a vector
|
double[] |
applyRelative(double[] v)
Apply the transformation onto a vector
|
Vector |
applyRelative(Vector v)
Apply the transformation onto a vector
|
double[] |
applyRelativeInverse(double[] v)
Apply the inverse transformation onto a vector
|
Vector |
applyRelativeInverse(Vector v)
Apply the inverse transformation onto a vector
|
AffineTransformation |
clone()
Return a clone of the affine transformation
|
int |
getDimensionality()
Query dimensionality of the transformation.
|
Matrix |
getInverse()
Get a copy of the inverse matrix
|
Matrix |
getTransformation()
Get a copy of the transformation matrix
|
double[] |
homogeneRelativeVector(double[] v)
Transform a relative vector into homogeneous coordinates.
|
Vector |
homogeneRelativeVector(Vector v)
Transform a relative vector into homogeneous coordinates.
|
double[] |
homogeneVector(double[] v)
Transform an absolute vector into homogeneous coordinates.
|
Vector |
homogeneVector(Vector v)
Transform an absolute vector into homogeneous coordinates.
|
static AffineTransformation |
reorderAxesTransformation(int dim,
int[] axes)
Generate a transformation that reorders axes in the given way.
|
double[] |
unhomogeneRelativeVector(double[] v)
Project an homogeneous vector back into the original space.
|
Vector |
unhomogeneRelativeVector(Vector v)
Project an homogeneous vector back into the original space.
|
double[] |
unhomogeneVector(double[] v)
Project an homogeneous vector back into the original space.
|
Vector |
unhomogeneVector(Vector v)
Project an homogeneous vector back into the original space.
|
private void |
updateInverse()
Compute the inverse transformation matrix
|
private int dim
private Matrix trans
private Matrix inv
public AffineTransformation(int dim)
dim
- dimensionalitypublic static AffineTransformation reorderAxesTransformation(int dim, int[] axes)
dim
- Dimensionality of vector space (resulting Matrix will be dim+1 x
dim+1)axes
- (Partial) list of axespublic AffineTransformation clone()
public int getDimensionality()
public void addTranslation(Vector v)
v
- translation vectorpublic void addMatrix(Matrix m)
m
- matrix (should be invertible)public void addRotation(int axis1, int axis2, double angle)
axis1
- first dimensionaxis2
- second dimensionangle
- rotation angle in radians.public void addAxisReflection(int axis)
axis
- Axis number to do the reflection at.public void addScaling(double scale)
scale
- Scaling factorpublic Matrix getTransformation()
public Matrix getInverse()
private void updateInverse()
public Vector homogeneVector(Vector v)
v
- initial vectorpublic double[] homogeneVector(double[] v)
v
- initial vectorpublic Vector homogeneRelativeVector(Vector v)
v
- initial vectorpublic double[] homogeneRelativeVector(double[] v)
v
- initial vectorpublic Vector unhomogeneVector(Vector v)
v
- Matrix of 1 x dim+1 containing the homogeneous vectorpublic double[] unhomogeneVector(double[] v)
v
- Matrix of 1 x dim+1 containing the homogeneous vectorpublic Vector unhomogeneRelativeVector(Vector v)
v
- Matrix of 1 x dim+1 containing the homogeneous vectorpublic double[] unhomogeneRelativeVector(double[] v)
v
- Matrix of 1 x dim+1 containing the homogeneous vectorpublic Vector apply(Vector v)
v
- vector of dimensionality dimpublic double[] apply(double[] v)
v
- vector of dimensionality dimpublic Vector applyInverse(Vector v)
v
- vector of dimensionality dimpublic double[] applyInverse(double[] v)
v
- vector of dimensionality dimpublic Vector applyRelative(Vector v)
v
- vector of dimensionality dimpublic double[] applyRelative(double[] v)
v
- vector of dimensionality dimpublic Vector applyRelativeInverse(Vector v)
v
- vector of dimensionality dimpublic double[] applyRelativeInverse(double[] v)
v
- vector of dimensionality dim