public void doConstruction(ConstructionStep step) {
if (step.getConstructionType() == MOVE) {
GeometricalObject o = (GeometricalObject)step.getInputs()[0];
Point translation = new Point(((Double)step.getInputs()[1]).doubleValue(),
((Double)step.getInputs()[2]).doubleValue());
Angle rotation = new Angle(((Double)step.getInputs()[3]).doubleValue());
Point fixedPoint = (Point)step.getInputs()[4];
if (fixedPoint.getAssocObjects().contains(o)) {
fixedPoint = new Point(fixedPoint.getX(), fixedPoint.getY());
fixedPoint.move(translation, new Angle(0), new Point());
step.getInputs()[4] = fixedPoint;
}
o.move(translation, rotation, fixedPoint);
clearAndHide();
step.setOutputs(new Object[]{o});