2011-03-29 99 views
0
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); 
} 

我已经写了这两种方法。第一个导致形状围绕一个点旋转,而现在我正试图让形状绕其轴旋转。我被告知在旋转之前进行翻译可以让形状绕轴旋转(如第二种方法所示),但我不确定如何组合这两个翻译以便旋转和旋转?结合旋转和平移 - Java 2D

任何帮助,非常感谢。

+0

为了尽快提供更好的帮助,请发布[SSCCE](http://pscode.org/sscce.html)而不是代码片段。 – 2011-03-29 10:43:55

回答

0

有太多聪明的话给我,但也许你想做到这一点:

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

rotate in documentation:

地连接了当前的Graphics2D Transform与平移的旋转变换 。

+0

哦,谢谢!这工作 – Stacked 2011-03-29 10:43:00

+0

呵呵,我很高兴它的作品;) – smas 2011-03-29 11:55:28

0

对于一个物体,它的工作原理是这样的:一个物体总是围绕原点旋转。
它也可以像这样工作Scale --> Rotate --> Translate

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

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

我希望这有助于。我不知道这个java API,但只是关于一般的观看管道。