package maps.gml.editor;
import maps.gml.GMLNode;
import maps.gml.GMLCoordinates;
import java.util.Random;
import org.uncommons.maths.random.DiscreteUniformGenerator;
import org.uncommons.maths.random.MersenneTwisterRNG;
/**
A function for adding noise to node coordinates.
*/
public class AddNoiseFunction extends ProgressFunction {
private static final int RANGE = 5;
private static final double FACTOR = 0.001;
private Random random;
/**
Construct an AddNoiseFunction.
@param editor The editor instance.
*/
public AddNoiseFunction(GMLEditor editor) {
super(editor);
random = new MersenneTwisterRNG();
}
@Override
public String getName() {
return "Add noise";
}
@Override
protected String getTitle() {
return "Adding noise";
}
@Override
protected void executeImpl() {
DiscreteUniformGenerator generator = new DiscreteUniformGenerator(-RANGE, RANGE, random);
setProgressLimit(editor.getMap().getNodes().size());
for (GMLNode next : editor.getMap().getNodes()) {
GMLCoordinates c = next.getCoordinates();
c.setX(c.getX() + (generator.nextValue() * FACTOR));
c.setY(c.getY() + (generator.nextValue() * FACTOR));
bumpProgress();
}
editor.setChanged();
editor.getViewer().repaint();
}
}