content: package edu.stanford.rsl.conrad.volume3d.operations;
  
  public class InitializeHighPass extends VoxelOperation {
  
  	private float[] fMax;
  	private float[] fDelta;
  	private float lpUpper;
  	private float hpLower;
  	private float hpUpper;
  
  	@Override
  	protected void performVoxelOperation() {
  		float r_abs = 0;
  
  		int dim_loop = 0;
  		float tmp;
  		float pos = -fMax[dim_loop] + (float) indexX * fDelta[dim_loop];
  		r_abs += pos * pos;
  		dim_loop=1;
  		pos = -fMax[dim_loop] + (float) indexY * fDelta[dim_loop];
  		r_abs += pos * pos;
  		dim_loop=2;
  		pos = -fMax[dim_loop] + (float) indexZ * fDelta[dim_loop];
  		r_abs += pos * pos;
  
  		r_abs = (float) Math.sqrt(r_abs);
  
  		if (r_abs <= lpUpper) {
  
  			tmp=(float) Math.cos(Math.PI*r_abs/(2.0*lpUpper));
  			vol.data[indexX][indexY][indexZ] =	(float) (1.0 - tmp*tmp);
  
  		} else if (lpUpper<r_abs && r_abs<=hpLower) {
  
  			vol.data[indexX][indexY][indexZ] = 1;
  
  		} else if (hpLower<r_abs && r_abs<=hpUpper) {
  
  			tmp=(float) Math.cos(Math.PI*(r_abs-hpLower)/(2.0*(hpUpper-hpLower)));
  			vol.data[indexX][indexY][indexZ] = tmp*tmp;
  
  		} else
  			vol.data[indexX][indexY][indexZ] = 0;
  
  	}
  
  	@Override
  	public ParallelVolumeOperation clone() {
  		InitializeHighPass clone = new InitializeHighPass();
  		clone.fMax = fMax;
  		clone.fDelta = fDelta;
  		clone.lpUpper = lpUpper;
  		clone.hpLower = hpLower;
  		clone.hpUpper = hpUpper;
  		return clone;
  	}
  
  	public float[] getfMax() {
  		return fMax;
  	}
  
  	public void setfMax(float[] fMax) {
  		this.fMax = fMax;
  	}
  
  	public float[] getfDelta() {
  		return fDelta;
  	}
  
  	public void setfDelta(float[] fDelta) {
  		this.fDelta = fDelta;
  	}
  
  	public float getLpUpper() {
  		return lpUpper;
  	}
  
  	public void setLpUpper(float lpUpper) {
  		this.lpUpper = lpUpper;
  	}
  
  	public float getHpLower() {
  		return hpLower;
  	}
  
  	public void setHpLower(float hpLower) {
  		this.hpLower = hpLower;
  	}
  
  	public float getHpUpper() {
  		return hpUpper;
  	}
  
  	public void setHpUpper(float hpUpper) {
  		this.hpUpper = hpUpper;
  	}
  
  }
  /*
   * Copyright (C) 2010-2014  Andreas Maier
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */