结合旋转和翻译 - Java 2D

时间:2011-03-29 10:27:12

标签: java java-2d

public void drawEarth(Graphics2D g2){
    theta -=0.1;

    g2.rotate(theta);
    g2.translate(50, 50);

    g2.setPaint(Color.blue);
    g2.fill(shape);
}

public void rotate(Graphics2D g2)
{
    theta -=0.1;

    g2.translate(50, 50);
    g2.rotate(theta);
}

我写过这两种方法。第一个导致形状围绕一个点旋转,我现在正试图使形状绕其轴旋转。我被告知在旋转之前进行平移会让形状围绕它的轴旋转(如第二种方法所示),但我不确定如何将这两种平移结合起来使它旋转并旋转?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

对我来说有太多聪明的话,但也许你想要这样做:

g2.rotate(double theta, double x, double y)

rotate in documentation:

  

连接当前的Graphics2D   使用平移旋转进行变换   变换。

答案 1 :(得分:0)

对于一个对象,它的工作方式如下:一个对象总是围绕Origin 旋转 它也像Scale --> Rotate --> Translate一样工作。

如果要围绕自己的轴旋转对象,它必须位于原点(不翻译时)。只需先调用一个旋转,然后将其转换为世界。完成后,你必须绕地球旋转它。所以再次调用旋转。

所以你得到了这个:(Scale) --> Rotate on own axis --> Translate on own offset --> Translate to the earth --> Rotate around the earth

我希望这会有所帮助。我不知道这个java API,但只知道一般的查看管道。