为什么g2d.rotate旋转90度不是完全的90度?JAVA

4

你好,我正在尝试创建一个环形文本。我通过循环每个旋转字符来完成了它。但是我仍然不理解角度。请问有人能给我一个好的解释吗?比如在下面的代码中,为什么a不是恰好90度?而是在100到120之间?

Graphics2D g2d = (Graphics2D)g;
    AffineTransform xform1, cxform;
    xform1 = AffineTransform.getTranslateInstance(200,200);
    g2d.setTransform(xform1);
    g2d.drawLine(0, -20, 0, 20);
    g2d.drawLine(-20, 0, 20, 0);
    xform1.rotate(Math.toDegrees(90));
    g2d.setTransform(xform1);
    g2d.drawString("a", 0, 20);

我的第一篇文章。希望我没有犯任何错误。 谢谢。

1个回答

5
你想要顺时针旋转90度,但是rotate方法使用的是弧度值,因此你的单位换算错了。你将90弧度转换为角度,然后传递给期望得到弧度值的方法 :) 请尝试以下方法:
xform1.rotate(Math.toRadians(90));

请注意,由于90°在弧度制中等于PI / 2,因此您完全无法获得精确值:p - Voo
@Voo:实际上,这里背景中使用的AffineTransform类特别处理象限旋转,因此使用pi/2就足够好了。 - Paŭlo Ebermann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接