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). */