package edu.stanford.rsl.conrad.phantom.renderer;
import edu.stanford.rsl.conrad.data.numeric.Grid2D;
import edu.stanford.rsl.conrad.data.numeric.Grid3D;
import edu.stanford.rsl.conrad.utils.CONRAD;
import edu.stanford.rsl.conrad.utils.UserUtil;
import ij.ImagePlus;
import ij.process.ImageProcessor;
/**
* Phantom of a homogeneous cylinder.
*
* @author akmaier
*
*/
public class CylinderPhantomRenderer extends StreamingPhantomRenderer {
double offset = .2;
@Override
public void createPhantom() {
Grid3D revan = new Grid3D(dimx, dimy, dimz);
for (int k = 0; k < dimz; k++){
Grid2D current = revan.getSubGrid(k);
for (int i=0; i< dimx; i++) {
for (int j = 0; j< dimy; j++){
double value = -1024; // air;
if ((Math.pow((dimx/2) - i,2) + Math.pow((dimy/2) - j,2) < Math.pow((dimx/2) * (1 - offset),2)) &&
(Math.abs((dimz/2) - k) < (dimz/2) * (1-offset))){
value = 0;
}
current.putPixelValue(i, j, value);
}
}
buffer.add(current, k);
}
}
@Override
public String toString() {
return "Cylinder Phantom";
}
@Override
public String getBibtexCitation() {
return CONRAD.CONRADBibtex;
}
@Override
public String getMedlineCitation() {
return CONRAD.CONRADMedline;
}
@Override
public void configure() throws Exception {
super.configure();
offset = UserUtil.queryDouble("Enter margin for air: ", offset);
}
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/