2010-10-19 126 views
2

我正在制作一个实用程序来快速创建CSS阴影,并意识到只能在IE中使用IE filters。然而,Shadow Filter使用方向,而不是(X,Y)坐标:Javascript:从X,Y坐标获得方向的公式

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

怎样的方向从计算出(X,Y)坐标?

编辑:使用从this link给出的答复和更多的细节:我修改我的代码如下:

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

如果您在水平通过偏移和垂直偏移,你会为X,Y分别使用,您将获得0至359的学位。

回答

11

方向以度为单位。

所以

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

如果您的计算器弧度的作品(如任何理智的calulator应该),你可以转换为弧度与

radians = degrees/180 * pi 

其中pi = 3.14159 ...或者数学。 PI

走另外一条路,用 '反正切'

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 
+0

+1:好的,你提到ATAN2;这是正确的,因为只要其中至少有一个参数不是零(与直接的atan不同),它就是无危害的。 – 2010-10-19 10:21:57

+0

谢谢。很好的解释。 – 2010-10-19 10:26:31