Как преобразовать нормали в градусы? - PullRequest
1 голос
/ 05 января 2012

Я работаю над игрой и пишу Entity базовый класс.Поскольку многие объекты будут вести себя как частицы (2D), я хочу использовать нормаль вместо поворота в градусах.Однако, поскольку я использую OpenGL, мне нужно иметь степень нормали, чтобы вращаться.Какой самый быстрый способ конвертировать из нормального в градусы и наоборот.Я знаю, что могу использовать тригонометрические функции, такие как atan2 sin cos и т. Д., Но я уверен, что есть более быстрый метод.Буду признателен за любую помощь или направление.

enter image description here

1 Ответ

9 голосов
/ 05 января 2012

Если вы ограничены двумя измерениями и пытаетесь преобразовать вектор направления (x, y) в градусы от оси x, то atan2(y, x) почти наверняка будет вашим самым быстрым методом, если вы Вы ограничиваете возможные значения x и y некоторыми довольно тривиальными случаями. Чтобы получить градусы от оси Y, просто используйте, конечно, atan2(x, y). Этот угол будет в радианах. Умножьте на 180 / pi, чтобы преобразовать в градусы. Это должно занять тривиальное время.

Рисунок, который вы рисуете, предполагает, что atan2(x, y) * 180 / Math.PI даст вам желаемый результат.

Не беспокойтесь о скорости, если вы не профилировали свой код и не определили, что в этом расчете есть узкое место (что маловероятно).

...