package edu.stanford.rsl.conrad.phantom;
import java.util.ArrayList;
import edu.stanford.rsl.conrad.geometry.motion.MotionField;
import edu.stanford.rsl.conrad.geometry.motion.timewarp.TimeWarper;
import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND;
import edu.stanford.rsl.conrad.rendering.PrioritizableScene;
public abstract class AnalyticPhantom4D extends AnalyticPhantom implements
MotionField {
/**
*
*/
private static final long serialVersionUID = -5680252649645704710L;
protected TimeWarper warper;
@Override
public void setTimeWarper(TimeWarper warp) {
warper = warp;
}
@Override
public TimeWarper getTimeWarper() {
return warper;
}
public MotionField getMotionField(){
return this;
}
@Override
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;
}
/**
* Creates the scene at time t given the sampling factors. Sampling factors are only used if tessellation is required.
* @param voxelSizeX
* @param voxelSizeY
* @param voxelSizeZ
* @param samplingU
* @param samplingV
* @param time
* @return the scene
*/
public abstract PrioritizableScene getScene(double time);
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/