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

Sen*_*lez 2 javascript css geometry trigonometry shadow

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

filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');"
Run Code Online (Sandbox Code Playgroud)

如何从(x,y)坐标计算方向?

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

function(x, y){
    var d = Math.atan2(x, y) * (180 / Math.PI);
    if(d < 0){ d = 180 - d; }
    return d;
}
Run Code Online (Sandbox Code Playgroud)

如果传递分别用作X,Y的水平偏移和垂直偏移,则将获得0到359之间的度数.

sje*_*397 10

方向以度为单位.

所以

x = cos(direction)
y = sin(direction)
Run Code Online (Sandbox Code Playgroud)

如果你的计算器以弧度工作(正如任何理智的计算器那样),你可以将度数转换为弧度

radians = degrees / 180 * pi
Run Code Online (Sandbox Code Playgroud)

其中pi = 3.14159 ...或Math.PI

换句话说,使用'atan'

radians = Math.atan(y / x)
Run Code Online (Sandbox Code Playgroud)

在Javascript中,您有一个Math.atan2以y和x为参数的函数.

radians = Math.atan2(y, x)
Run Code Online (Sandbox Code Playgroud)

弧度到度是:

degrees = radians / pi * 180
Run Code Online (Sandbox Code Playgroud)

结果是:

direction = Math.atan2(y,  x) / Math.PI * 180
Run Code Online (Sandbox Code Playgroud)