I'am a command pattern to rotate and translate shapes on Java Swing The translation and the rotation work well separatly, but when I do a 60 deg. rotation and then the translation, the translation follow the new rotated coordinate. Which means if I drag the mouse, the shape moves with a 60 deg gap from the mouse mouvement vector is there any easy solution ? please help, I'am hitting a wall here
My execute method for the rotation
public void execute() {
System.out.println("command: rotate " + thetaDegrees );
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
t.rotate(Math.toRadians(thetaDegrees), shape.getCenter().x, shape.getCenter().y);
shape.setAffineTransform(t);
}
}
My execute method for the translation
public void execute() {
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
System.out.println("Translation x :"+x + ", Translation y :"+y);
t.translate(x,y);
shape.setAffineTransform(t);
}
}
Any help can be really appreciated
To accomplish an "in-place" rotation (where the object rotates about its own axis), you must:
Note that steps 3 and 4 could be applied at once.
If rotation is attempted at position other than the origin, a "revolving" effect is achieved - one where the object appears to be revolving about the origin.