Interface InvertibleTransform<T extends InvertibleTransform>
 All Superinterfaces:
Serializable
 All Known Subinterfaces:
Affine<T>
,Homography<T>
,SpecialEuclidean<T>
 All Known Implementing Classes:
Affine2D_F32
,Affine2D_F64
,Homography2D_F32
,Homography2D_F64
,Se2_F32
,Se2_F64
,Se3_F32
,Se3_F64
,So3_F32
,So3_F64
public interface InvertibleTransform<T extends InvertibleTransform> extends Serializable
Any transform which has an unique inverse. T(u) = v and u = T^{1}(v).
Functions are provided to determining the dimensionality of the transform, inverting the transform, and concating two transforms.
Design Note: A function to apply the transform has not been provided to any
data structures (e.g. GeoTuple
). Instead that has been pushed off onto specialized static
functions in other classes due to the large number of needed functions.

Method Summary
Modifier and Type Method Description T
concat(T second, T result)
Computes a transform which is the equivalent to applying 'this' then the 'second' transform.T
createInstance()
Creates a new instance of the same SpecialEuclidean as this class.int
getDimension()
Returns the dimension of the space which this transform operates on.T
invert(T inverse)
Computes a transform which is the inverse of this transform.void
reset()
Sets the transform to its initial state of no transform.void
setTo(T target)
Assigns 'this' to the value of target.

Method Details

getDimension
int getDimension()Returns the dimension of the space which this transform operates on. Returns:
 space's dimension

createInstance
T createInstance()Creates a new instance of the same SpecialEuclidean as this class. Returns:
 A new instance.

setTo
Assigns 'this' to the value of target. Parameters:
target
 The new value of 'this'.

concat
Computes a transform which is the equivalent to applying 'this' then the 'second' transform.
For example:
Point A = tran2( tran1( A ) );
Point A = tran12( A );
where tran12 = tran1.concat( tran2 , null );NOTE: 'second', 'result', and 'this' must all be unique instances.
 Parameters:
second
 The second transform which is applied. Not modified.result
 A transform which is equivalent to applying the first then the second. If null then a new instance is declared. Modified. Returns:
 The equivalent transform.

invert
Computes a transform which is the inverse of this transform. The 'this' matrix can be passed in as an input.
Example:
Point A = tran(B);
Point B = inv(A);
where inv = invert( tran ); Parameters:
inverse
 Where the inverse will be stored. If null a new instance is created. Modified. Returns:
 The inverse transform.

reset
void reset()Sets the transform to its initial state of no transform.
