2012-08-13 198 views
0

這裏是代碼,我想要獲得旋轉角度。我正在旋轉錶盤周圍的圖像。除了當它達到270度時,我會得到所有的角度,它確實有些時髦的東西。角度變爲負值。它工作正常,從0到270,但我不能讓它的270間顯示角度360..Please給我一些建議旋轉角度

this.rotate = function(x){ 
    this.node.style.MozTransform="rotate("+x+"deg)"; 
    this.node.style.WebkitTransform="rotate("+x+"deg)"; 
    this.node.style.OTransform="rotate("+x+"deg)"; 
    this.node.style.msTransform="rotate("+x+"deg)"; 
    this.node.style.Transform="rotate("+x+"deg)"; 

myintID = setInterval(function(){ 
    //Math! 
    angleFromEye = Math.atan2((cursorLocation.y-self.my_y), cursorLocation.x- self.my_x)*(180/Math.PI)+ 90; 
    //Rotate 
    self.rotate(angleFromEye); 
+3

我的第一個建議是,問題將與'.rotate'函數,你沒有告訴我們。你是否想要粘貼更多的代碼? – 2012-08-13 13:44:23

回答

0

其實角度爲負的值-90到0也行,不過你加90的角度,所以你沒有看到。

只需加360的角度時,它的負:

if (angleFromEye < 0) angleFromEye += 360; 
+0

這不起作用。我試圖得到旋轉的角度..它的工作完全正常,直到270.但隨後其給我隨機的負數... – suva 2012-08-13 13:53:34

+0

@subL:不,負數不是隨機的,他們只是消極的角度。角度-45與315相同,即360-45。 – Guffa 2012-08-13 13:58:30

+0

謝謝Guffa。這解決了我的問題! – suva 2012-08-13 14:17:02

0

我覺得你的問題是轉換從atan2返回值的範圍所需的範圍。

atan2給出弧度的角度,在[-pi,pi]範圍內,你想要角度的度數在[0,360]範圍內。

您的轉換爲您提供的角度範圍爲[-180+90,180+90] = [-90,270]

atan2(...)*(180/Math.PI) + 90 

試試這個:

atan2(...)*(180/Math.PI) + 180 
+0

它的工作原理,但現在我旋轉圖像.. 0是在270的位置..而我的撥號有數字0-9,我想0 = 0degree而不是90 .. – suva 2012-08-13 14:02:26