有没有人在javascript中旋转后有x/y位置的翻译功能?
例如:
this.mousex = event.clientX - this.el.offsetLeft;
this.mousey = event.clientY - this.el.offsetTop;
给了我鼠标位置,但是我的父 div 旋转了 x 度,这当然意味着 mousex/mousey 不正确。javascript 是否有内置的功能(不是我见过的,但是..)?
非常感谢
有没有人在javascript中旋转后有x/y位置的翻译功能?
例如:
this.mousex = event.clientX - this.el.offsetLeft;
this.mousey = event.clientY - this.el.offsetTop;
给了我鼠标位置,但是我的父 div 旋转了 x 度,这当然意味着 mousex/mousey 不正确。javascript 是否有内置的功能(不是我见过的,但是..)?
非常感谢
假设您的 div 顺时针旋转t
弧度。那么变换后的坐标为:
x' = cos(t)*x - sin(t)*y
y' = sin(t)*x + cos(t)*y
我刚刚为你写了以下内容,我已经检查过它(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 应该可以。