mirror of
https://github.com/GTNewHorizons/CodeChickenCore.git
synced 2026-11-11 15:57:42 +00:00
50 lines
1.4 KiB
Java
50 lines
1.4 KiB
Java
package codechicken.lib.vec;
|
|
|
|
/**
|
|
* Abstract supertype for any VectorN transformation
|
|
* @param <Vector> The vector type
|
|
* @param <Transformation> The transformation type
|
|
*/
|
|
public abstract class ITransformation<Vector, Transformation extends ITransformation>
|
|
{
|
|
/**
|
|
* Applies this transformation to vec
|
|
*/
|
|
public abstract void apply(Vector vec);
|
|
|
|
/**
|
|
* @param point The point to apply this transformation around
|
|
* @return Wraps this transformation in a translation to point and then back from point
|
|
*/
|
|
public abstract Transformation at(Vector point);
|
|
|
|
/**
|
|
* Creates a TransformationList composed of this transformation followed by t
|
|
* If this is a TransformationList, the transformation will be appended and this returned
|
|
*/
|
|
public abstract Transformation with(Transformation t);
|
|
|
|
/**
|
|
* Returns a simplified transformation that performs this, followed by next. If such a transformation does not exist, returns null
|
|
*/
|
|
public Transformation merge(Transformation next) {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Returns true if this transformation is redundant, eg. Scale(1, 1, 1), Translation(0, 0, 0) or Rotation(0, a, b, c)
|
|
*/
|
|
public boolean isRedundant() {
|
|
return false;
|
|
}
|
|
|
|
public abstract Transformation inverse();
|
|
|
|
/**
|
|
* Scala ++ operator
|
|
*/
|
|
public Transformation $plus$plus(Transformation t) {
|
|
return with(t);
|
|
}
|
|
}
|