java - Graphics2D Rotation Precision Issues -


i drawing 4 stacked rectangles, rotating canvas point , drawing same shape again stacked rectangles aren't remaining aligned.

here's screenshot:

alignment issue

as can see, first, unrotated block perfect following ones misaligned. why happening , how can prevent it?


ssce

//just import keep short , sweet import java.awt.*; import java.awt.geom.*; import javax.swing.*;  @suppresswarnings("serial") public class alignmentissue extends jcomponent {     @override     public void paint(graphics g) {         graphics2d g2d = (graphics2d)g;         double angle = math.toradians(30);         int numrects = (int)math.floor(2.0 * math.pi / angle);         rectangle rect = new rectangle(0, 100, 20, 25);          g2d.setrenderinghint(renderinghints.key_antialiasing,                              renderinghints.value_antialias_on);         g2d.translate(getwidth() / 2, getheight() / 2);          for(int = 0; < numrects; ++i) {             affinetransform transform = g2d.gettransform();              for(int n = 0; n < 3; ++n) {                 g2d.draw(rect);                 g2d.translate(0, rect.height);             }              g2d.settransform(transform);             g2d.rotate(angle);         }     }      public static void main(string[] args) {         jframe frame = new jframe("alignment issue");          frame.add(new alignmentissue());         frame.setdefaultcloseoperation(jframe.exit_on_close);         frame.setpreferredsize(new dimension(800, 600));         frame.pack();         frame.setlocationrelativeto(null);         frame.setvisible(true);     } } 

you need more precise stroke control:

g2d.setrenderinghint(renderinghints.key_stroke_control, renderinghints.value_stroke_pure); 

the default may let geometry vary bit, depending on implementation. pure tries keep subpixel accuracy.


Comments

Popular posts from this blog

assembly - 8086 TASM: Illegal Indexing Mode -

Java, LWJGL, OpenGL 1.1, decoding BufferedImage to Bytebuffer and binding to OpenGL across classes -

javascript - addthis share facebook and google+ url -