content: /*
   * 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.io.Serializable;
  import java.util.ArrayList;
  
  import edu.stanford.rsl.conrad.geometry.motion.timewarp.TimeWarper;
  import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND;
  
  
  public abstract class SimpleMotionField implements MotionField, Serializable {
  
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = -352375092478769290L;
  	protected TimeWarper warp;
  	
  	public abstract PointND getPosition(PointND initialPosition, double initialTime, double time);
  
  	public ArrayList<PointND> getPositions(PointND initialPosition, double initialTime,
  			double ... times) {
  		ArrayList<PointND> list = new ArrayList<PointND>();
  		for (int i=0; i< times.length; i++){
  			list.add(getPosition(initialPosition, initialTime, times[i]));
  		}
  		return list;
  	}
  	
  	public ArrayList<PointND> getPositions(double initialTime,
  			double time, PointND ... initialPositions) {
  		ArrayList<PointND> list = new ArrayList<PointND>();
  		for (int i=0; i< initialPositions.length; i++){
  			list.add(getPosition(initialPositions[i], initialTime, time));
  		}
  		return list;
  	}
  
  	public TimeWarper getTimeWarper() {
  		return warp;
  	}
  
  	public void setTimeWarper(TimeWarper warp) {
  		this.warp = warp;
  	}
  
  }
  