How do I make something rotate?
Added: 31 Jan 2009. Working example for Java
Changing the orientation of an object, as with changing size makes use of coordinate transforms.
transform = CoordTransform.translate(x, y); orientation = CoordTransform.rotate(angle); transform = new CoordTransform(CoordTransform.product(position .getMatrix(), orientation.getMatrix())); movie.add(new Place(rectangle.getIdentifier(), 2, transform)); movie.add(ShowFrame.getInstance());
Transform allows you to specify the angle in degrees. It then converted to radians before before used to create the transform.
int angle = 0; int delta = 15; int steps = 360/delta; CoordTransform transform = CoordTransform.translate(x, y); for (int i=0; i<steps; i++) { angle += delta; orientation = CoordTransform.rotate(angle); transform = new CoordTransform(CoordTransform.product( position.getMatrix(), orientation.getMatrix())); movie.add(new Place2().setType(PlaceType.MODIFY) .setLayer(1).setTransform(transform); movie.add(ShowFrame.getInstance()); }
Creating an animation to rotate an object uses the same process as changing its size - the angle of rotation is updated and used to generate a coordinate transform which changes the original definition of the object - not the previous transform applied.