2011-03-06 51 views
0

我一直在研究這個問題一個小時,但無法得到它。Java中的Vector2d類中的旋轉

我有一個的Vector2D類:

public class Vector2d 
{ 
    public double x = 0.0; 
    public double y = 0.0; 

    .... 
} 

這個載體類有這是造成我麻煩rotate()方法。

第一個代碼片段似乎使x和y值越來越小。第二個工作正常!我在這裏錯過簡單的東西嗎?

public void rotate(double n) 
{ 
    this.x = (this.x * Math.cos(n)) - (this.y * Math.sin(n)); 
    this.y = (this.x * Math.sin(n)) + (this.y * Math.cos(n)); 
} 

這工作:

public void rotate(double n) 
{ 
    double rx = (this.x * Math.cos(n)) - (this.y * Math.sin(n)); 
    double ry = (this.x * Math.sin(n)) + (this.y * Math.cos(n)); 
    x = rx; 
    y = ry; 
} 

我不能發現有什麼不同

回答

9

第一行設置的this.x值,然後在第二行使用時,你真的想要的是this.x的原始值。第二個版本正常工作,因爲你不會改變this.x

+1

哦不,不能相信我錯過了。我覺得很愚蠢。謝謝! – 2011-03-06 00:13:02