package tc.oc.pgm.rotation;

import javax.annotation.Nonnull;


/**
 * Represents a transformation to a {@link RotationState} object.
 */
public interface RotationTransformation {
    /**
     * Applies the stored transformation to the given argument.
     * @param state RotationState to transform
     * @return New RotationState instance with the specified transformations
     *
     * @throws NullPointerException if state is null
     */
    @Nonnull RotationState apply(@Nonnull RotationState state);
}
