Вычисление градусов между 2 точками с обратной осью Y

Я создаю простую 2D игру в JavaScript/холсте. Я должен выяснить угол определенного объекта относительно моего положения.

Так: скажите, что я в (10,10), и объект в (10,5) - который привел бы к 90 градусам (поскольку положительный Y снижается, отрицательный Y произошел) (10,10) по сравнению с (10,15), были бы 270 градусов.

Как я пошел бы об этом?

26
задан skerit 22 July 2010 в 13:57
поделиться

2 ответа

Предположим, вы находитесь в (a, b), а объект находится в (c, d). Тогда относительное положение объекта по отношению к вам будет (x, y) = (c - a, d - b).

Затем вы можете использовать функцию Math.atan2 () , чтобы получить угол в радианах.

var theta = Math.atan2(-y, x);

обратите внимание, что результат находится в диапазоне [-π, π]. Если вам нужны неотрицательные числа, вам нужно сложить

if (theta < 0)
   theta += 2 * Math.PI;

и преобразовать радианы в градусы, умножить на 180 / Math.PI .

37
ответ дан 28 November 2019 в 07:10
поделиться

Если ваши координаты (xMe, yMe) и их координаты (xThem, yThem), то вы можете использовать формулу:

arctan ((yMe-yThem) / (xThem- xMe))

Обычно это arctan ((yThem-yMe) / (xThem-xMe)) , но в этом случае знак оси y меняется на противоположный.

Чтобы преобразовать результат из радиан в градусы, умножьте на 180 / пи.

Таким образом, в JavaScript это будет выглядеть так: Math.atan ((yThem-yMe) / (xThem-xMe)) * 180 / Math.PI

atan дает значение от -pi / 2 до пи / 2 (то есть от -90 до 90 градусов). Но вы можете посмотреть, в каком квадранте находится ваш вектор (xThem - xMe, yMe - yThem), и отрегулировать его соответствующим образом.

6
ответ дан 28 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: