3

我正在制作一个实用程序来快速创建 CSS 阴影,并意识到这只能在带有IE 过滤器的 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 的水平偏移和垂直偏移,您将获得从 0 到 359 的度数。

4

1 回答 1

11

方向以度为单位。

所以

x = cos(direction)
y = sin(direction)

如果您的计算器以弧度工作(就像任何理智的计算器一样),您可以将度数转换为弧度

radians = degrees / 180 * pi

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

换一种方式,使用“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
于 2010-10-19T10:12:48.630 回答