/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/
package edu.stanford.rsl.conrad.geometry.motion;
import java.util.ArrayList;
import edu.stanford.rsl.conrad.geometry.motion.timewarp.TimeWarper;
import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND;
public interface MotionField {
/**
* Determines the position at a given initialPosition and a given time where time = 0 is the initial position and time = 1 is the end position.
* @param initialPosition
* @param initialTime
* @param time
* @return the position at the time
*/
public PointND getPosition(PointND initialPosition, double initialTime, double time);
public void setTimeWarper(TimeWarper warp);
public TimeWarper getTimeWarper();
public ArrayList<PointND> getPositions(PointND initialPosition, double initialTime, double ... times);
/**
* implements a position look up from one time to another for many points
* @param initialTime the inital time
* @param time the end time
* @param initialPositions the initial positions
* @return the positions as array list
*/
public ArrayList<PointND> getPositions(double initialTime, double time, PointND ... initialPositions);
}