package edu.stanford.rsl.conrad.volume3d.operations;
public class InitializeGaussian extends VoxelOperation {
private float[] fMax;
private float[] fDelta;
private float sigma;
@Override
protected void performVoxelOperation() {
float r_abs_sq = 0.0f;
double pos = - (double) fMax[0] + (double) indexX * (double) fDelta[0];
r_abs_sq += pos * pos;
pos = - (double) fMax[1] + (double) indexY * (double) fDelta[1];
r_abs_sq += pos * pos;
pos = - (double) fMax[2] + (double) indexZ * (double) fDelta[2];
r_abs_sq += pos * pos;
vol.data[indexX][indexY][indexZ] = (float) Math.exp(- (double) 0.5*r_abs_sq*sigma*sigma);
}
@Override
public ParallelVolumeOperation clone() {
InitializeGaussian clone = new InitializeGaussian();
clone.fMax = fMax;
clone.fDelta = fDelta;
clone.sigma = sigma;
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 getSigma() {
return sigma;
}
public void setSigma(float sigma) {
this.sigma = sigma;
}
}
/*
* Copyright (C) 2010-2014 Andreas Maier
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/