package mikera.transformz.impl;
import mikera.transformz.ATranslation;
import mikera.transformz.Transformz;
import mikera.vectorz.AVector;
import mikera.vectorz.Vector;
/**
* Class representing a transform that returns a constant
* @author Mike
*
*/
public final class ConstantTransform extends AConstantTransform {
private final int outputDimensions;
private double[] constant;
/**
* Creates a new constant transform, using the provided vector as the constant value
* Does *not* take a defensive copy
* @param inputDimensions
* @param value
*/
public ConstantTransform(int inputDimensions, AVector value) {
super(inputDimensions);
outputDimensions=value.length();
constant=new double[outputDimensions];
value.getElements(constant, 0);
}
@Override
public double calculateElement(int i, AVector v) {
return constant[i];
}
@Override
public int outputDimensions() {
return outputDimensions;
}
@Override
public void transform(AVector source, AVector dest) {
assert(source.length()==inputDimensions());
dest.setElements(constant);
}
@Override
public ATranslation getTranslation() {
return Transformz.createTranslation(constant);
}
@Override
public AVector getConstantValue() {
return Vector.wrap(constant);
}
}