2012-08-13 199 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