Javascript: Формула, чтобы получить направление от координат X, Y - PullRequest
2 голосов
/ 19 октября 2010

Я делал утилиту для быстрого создания теней CSS и понял, что это можно сделать только в IE с фильтрами IE . Однако Shadow Filter использует направление вместо (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.

1 Ответ

10 голосов
/ 19 октября 2010

Направление в градусах.

Итак

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
...