2

有没有人在javascript中旋转后有x/y位置的翻译功能?

例如:

this.mousex = event.clientX - this.el.offsetLeft;
this.mousey = event.clientY - this.el.offsetTop;

给了我鼠标位置,但是我的父 div 旋转了 x 度,这当然意味着 mousex/mousey 不正确。javascript 是否有内置的功能(不是我见过的,但是..)?

非常感谢

4

2 回答 2

1

假设您的 div 顺时针旋转t弧度。那么变换后的坐标为:

x' = cos(t)*x - sin(t)*y

y' = sin(t)*x + cos(t)*y

于 2012-07-04T20:34:45.410 回答
1

我刚刚为你写了以下内容,我已经检查过它(1,0,Math.PI/2)并且(0,1,Math.PI/2)它有效。

function rotatePoints(x,y,angle){
   var point={};
   point.x = x*Math.cos(angle)- y*Math.sin(angle);
   point.y = x*Math.sin(angle) + y*Math.cos(angle);
   return point;
}

应该可以,请参阅Wikipedia 中的旋转矩阵

当然,角度应该以弧度为单位。您可以通过乘以Math.PI并除以 180 将度数转换为弧度。角度是逆时针方向,如果您想顺时针旋转通过 -angle 或将 sin 更改为 -sin 应该可以。

于 2012-07-04T20:38:32.163 回答