求大神js代码 知道A点的坐标,绕着O(原点)旋转任意角度求出旋转后的B坐标。

JavaScript020

求大神js代码 知道A点的坐标,绕着O(原点)旋转任意角度求出旋转后的B坐标。,第1张

这是数学题啊....

Rotate = function(Source,Angle)//Angle为正时逆时针转动, 单位为弧度

{

var A,R

A = Math.atan2(Source.Y,Source.X)//atan2自带坐标系识别, 注意X,Y的顺序

A += Angle//旋转

R = Math.sqrt(Source.X * Source.X + Source.Y * Source.Y)//半径

return {

X : Math.cos(A) * R,

Y : Math.sin(A) * R

}

}

Rotate({X : 0,Y : 4},-Math.PI / 4)

注意, 由於牵扯浮点运算, 所以你如果调用

Rotate({X : 0,Y : 4},Math.PI / 2)

返回可能会是{X: -4, Y: 4.898425415289509e-16}

Y很小但不等於0

当然如果用矩阵变换也是可以写的..

根据我的理解,你这是给了两个坐标,求这个向量和水平线的角度么?

其实就是一个数学问题吧?

function angle(start,end){

    var diff_x = end.x - start.x,

        diff_y = end.y - start.y

    //返回角度,不是弧度

    return 360*Math.atan(diff_y/diff_x)/(2*Math.PI)

}

那么执行

angle({x:0,y:0},{x:1,y:1})就会返回45(度)