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);
}
我写过这两种方法。第一个导致形状围绕一个点旋转,我现在正试图使形状绕其轴旋转。我被告知在旋转之前进行平移会让形状围绕它的轴旋转(如第二种方法所示),但我不确定如何将这两种平移结合起来使它旋转并旋转?
非常感谢任何帮助。
答案 0 :(得分:0)
对我来说有太多聪明的话,但也许你想要这样做:
g2.rotate(double theta, double x, double y)
连接当前的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,但只知道一般的查看管道。