package edu.stanford.rsl.tutorial.phantoms;
/**
* Simple class to show the Grid3D functionality. We use a Grid3D to create a cube containing 8 smaller cubes of different intensities.
* We use this as a first phantom to investigate cone beam projection and back-projection.
*
* @author Recopra Summer Semester 2012
*
*/
public final class SimpleCubes3D extends Phantom3D {
/**
* The constructor takes three arguments to initialize the grid. The cube will be in the center.
* @param x
* @param y
* @param z
*/
public SimpleCubes3D (int x, int y,int z){
super(x, y, z, "SimpleCubes3D");
final float VAL = 10.0f;
for(int a=1; a<=8; ++a){
final int start1 = (4 >= a) ? 0 : x/2;
final int start2 = (0 == a % 4 || 0 == (a+1) % 4) ? 0 : y/2;
final int start3 = (0 == a % 2) ? 0 : z/2;
final int end1 = (4 >= a) ? x/2 : x;
final int end2 = (0 == a % 4 || 0 == (a+1) % 4) ? y/2 : y;
final int end3 = (0 == a % 2) ? z/2 : z;
// System.out.println("START:\t" + start1 + "\t" + start2 + "\t" + start3);
// System.out.println("END:\t" + end1 + "\t" + end2 + "\t" + end3);
for (int i = start1; i < end1; i++) {
for (int j = start2; j < end2; j++) {
for (int k = start3; k < end3; ++k){
super.setAtIndex(i, j, k, VAL + a);
// System.out.println("super.setAtIndex(" + i + ", " + j + ", " + k + ", " + VAL * a + ");");
}
}
}
}
}
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/