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)