package edu.stanford.rsl.conrad.geometry.transforms; import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND; import edu.stanford.rsl.conrad.numerics.SimpleOperators; import edu.stanford.rsl.conrad.numerics.SimpleVector; /** * This class decorates a translation vector. it translates points without altering direction of travel. * @author Rotimi X Ojo * */ public class Translation extends Transform { private static final long serialVersionUID = 3605382281959086496L; private SimpleVector translator = null; /** * Initialize a translation transform with a translation vector * @param t is vector equivalent of a translation matrix */ public Translation(SimpleVector t){ translator = t; } /** * Initialize a translation transform with a translation vector * @param t is vector defined by comma-separated values */ public Translation(double ... t){ translator = new SimpleVector(t); } /** * Applies the vector equivalent of a translation matrix on a given point. * @param point is point to be translated. * @return point y = v + point where v is a translation vector. */ @Override public PointND transform(PointND point) { return new PointND(SimpleOperators.add(point.getAbstractVector(),translator)); } /** * Since directions are not altered by translation, this method returns a given input unaltered. * @param dir is direction to be translated. * @return dir */ @Override public SimpleVector transform(SimpleVector dir) { return dir; } @Override public Translation inverse() { return new Translation(translator.negated()); } @Override public Transform clone() { return new Translation(translator.clone()); } @Override public SimpleVector getData() { return translator; } } /* * Copyright (C) 2010-2014 Andreas Maier, Rotimi X Ojo * CONRAD is developed as an Open Source project under the GNU General Public License (GPL). */