Package mikera.transformz

Source Code of mikera.transformz.Translation

package mikera.transformz;

import mikera.matrixx.AMatrix;
import mikera.matrixx.Matrixx;
import mikera.vectorz.AVector;
import mikera.vectorz.Vectorz;

/**
* Represents a translation by a fixed vector
*
* @author Mike
*/
public final class Translation extends ATranslation {
  private final AVector translationVector;
  private final int dimensions;
 
  public Translation(AVector source) {
    translationVector=source;
    dimensions=source.length();
  }
 
  public Translation(ATranslation t) {
    this(Vectorz.create(t.getTranslation().getTranslationVector()));
  }
 
  @Override
  public double calculateElement(int i, AVector v) {
    return v.get(i)+translationVector.get(i);
  }

  public Translation(double[] v) {
    dimensions=v.length;
    translationVector=Vectorz.create(v);
  }

  @Override
  public AVector getTranslationVector() {
    return translationVector;
  }
 
  @Override
  public void transform(AVector source,AVector dest) {
    dest.set(source);
    dest.add(translationVector);
  }
 
  @Override
  public void transformInPlace(AVector v) {
    v.add(translationVector);
  }
 

  @Override
  public AMatrix getMatrix() {
    return Matrixx.createImmutableIdentityMatrix(dimensions);
  }

  @Override
  public ATranslation getTranslation() {
    return this;
  }

  @Override
  public int inputDimensions() {
    return dimensions;
  }

  @Override
  public int outputDimensions() {
    return dimensions;
  }
 
  @Override
  public int dimensions() {
    return dimensions;
  }
 
  @Override
  public void composeWith(ATransform t) {
    if (t instanceof ATranslation) {
      composeWith((ATranslation) t);
      return;
    }
    super.composeWith(t);
  }
 
  public void composeWith(ATranslation t) {
    if (t instanceof Translation) {
      composeWith((Translation) t);
      return;
    }
    AVector v=t.getTranslationVector();
    translationVector.add(v);
  }
 
  public void composeWith(Translation t) {
    assert(t.dimensions()==this.dimensions());
    translationVector.add(t.translationVector);
  }
}
TOP

Related Classes of mikera.transformz.Translation

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.