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

发布于 2024-09-28 17:03:52 字数 788 浏览 7 评论 0原文

我正在制作一个实用程序来快速创建 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的度数。

I was making a utility to quickly create CSS drop shadows, and realized that this can only be done in IE with IE filters. However, the Shadow Filter uses Direction instead of (x, y) coordinates:

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

How can Direction be calculated from (x, y) coordinates?

Edit: Using the responses given and more details from this link: I modified my code as follows:

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

If you pass in Horizontal Offset and Vertical Offset that you would use as X, Y respectively, you will get a degree from 0 to 359.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

兮颜 2024-10-05 17:03:52

方向以度为单位。

因此,

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

如果您的计算器以弧度工作(任何理智的计算器都应该如此),您可以使用

radians = degrees / 180 * pi

where 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

Direction is in degrees.

So

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

If your calculator works in radians (as any sane calulator should), you can convert degrees to radians with

radians = degrees / 180 * pi

where pi = 3.14159... or Math.PI

To go the other way, use 'atan'

radians = Math.atan(y / x)

In Javascript you have a Math.atan2 function which takes y and x as parameters.

radians = Math.atan2(y, x)

radians to degrees is:

degrees = radians / pi * 180

so the result is:

direction = Math.atan2(y,  x) / Math.PI * 180
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文