旋转角度

时间:2012-08-13 13:41:43

标签: javascript math

这是代码,我试图获得旋转角度。我在表盘周围旋转图像。我正在获得所有角度,除非它达到270度时它会做一些时髦的东西。角度变为负值。它工作正常从0到270,但我不能让它显示270到360之间的角度..请给我一些建议

    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 个答案:

答案 0 :(得分:0)

实际上角度对于值-90到0也是负的,但是你在角度上加了90,所以你看不到。

只需在角度为负时添加360:

if (angleFromEye < 0) angleFromEye += 360;

答案 1 :(得分:0)

我认为您的问题在于将atan2的返回值范围转换为您想要的范围。

atan2以弧度为单位给出角度,在[-pi,pi]范围内,您希望角度范围为[0,360]

您的转换会为您提供[-180+90,180+90] = [-90,270]范围内的角度。

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

请改为尝试:

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

答案 2 :(得分:0)

我最近创建了一个jQuery插件,它允许您获取元素的旋转,还可以旋转元素。它也适用于ie7和ie8。 这里:http://wp-dreams.com/jquery-element-rotation-plugin/