Javascript:从X,Y坐标获取方向的公式

Javascript:从X,Y坐标获取方向的公式,javascript,css,geometry,trigonometry,shadow,Javascript,Css,Geometry,Trigonometry,Shadow,我正在制作一个实用程序来快速创建CSS阴影,并意识到这只能在IE中完成。但是,使用方向而不是(x,y)坐标: filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');" 如何从(x,y)坐标计算方向 编辑:使用给出的响应和来自的更多详细信息:我修改代码如下: function(x, y){ var d = Math.atan2(x, y) * (180 /

我正在制作一个实用程序来快速创建CSS阴影,并意识到这只能在IE中完成。但是,使用方向而不是(x,y)坐标:

filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');"
如何从(x,y)坐标计算方向

编辑:使用给出的响应和来自的更多详细信息:我修改代码如下:

function(x, y){
    var d = Math.atan2(x, y) * (180 / Math.PI);
    if(d < 0){ d = 180 - d; }
    return d;
}
函数(x,y){
var d=数学atan2(x,y)*(180/数学PI);
如果(d<0){d=180-d;}
返回d;
}

如果传入将分别用作X、Y的水平偏移和垂直偏移,将得到0到359之间的度数。

方向以度数为单位

所以

如果你的计算器是以弧度计算的(就像任何一个理智的计算器一样),你可以用

radians = degrees / 180 * pi
其中pi=3.14159。。。或者数学

要走另一条路,请使用“atan”

radians = Math.atan(y / x)
在Javascript中,有一个
Math.atan2
函数,它以y和x为参数

radians = Math.atan2(y, x)
弧度与度的比值为:

degrees = radians / pi * 180
因此,结果是:

direction = Math.atan2(y,  x) / Math.PI * 180

+1:很好,你提到了atan2;这是正确的,因为只要至少有一个参数为非零(不同于直线atan),它就没有危险。
direction = Math.atan2(y,  x) / Math.PI * 180