2011-03-29 100 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,但只是關於一般的觀看管道。