JavaScript:从X、Y坐标获取方向的公式。

3
我正在制作一个实用工具,可以快速创建CSS阴影效果。我意识到只有在IE中才能使用IE过滤器来实现这个效果。然而,阴影滤镜使用方向而不是(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的角度。
1个回答

12

方向以度数表示。

因此

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

+1: 很好你提到了atan2;这是正确的做法,因为只要其中一个参数非零(与直接的atan不同),atan2是没有危险的。 - Donal Fellows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接