I can help you with this! ;D
Ive had a simmiliar issue and the reason for it is because when you use affinetransform even if you are not using any antiailiasing when you rotate an image multiple times it begins to be “weird”.
So the answer to this is to instead of actually rotating the image, you should store a double with the desired rotation and right before rendering rotate it that amount and render the rotated image. The rendered image will be perfect.
Code example from TheEntropyGameEngine :
AffineTransform at = new AffineTransform();
at.translate(image.getImageLocationX(), image.getImageLocationY());
at.rotate(image.getImageRotation(), image.imageSrc.getWidth()/2, image.imageSrc.getHeight()/2);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(image.imageSrc, at, null);
Within the,
paintComponent(Graphics g)
Remember that all the image.whatever(); code is irrelevant to you, that is specific data for rendering objects in my engine.