Требуется ли atan2 нормализованные векторы? Какой лучше использовать acos или atan для углов между векторами? - PullRequest
2 голосов
/ 05 июля 2019

При расчете угла между двумя векторами я традиционно использовал acos, но для этого требуется нормализация двух векторов.atan2 может использоваться для достижения того же (в частности, atan2(b.y_, b.x_) - atan2(a.y_, a.x_)), требуются ли для этого нормализованные векторы?

Если atan2 не требует нормализованных векторов, будет ли это лучше использовать, поскольку нормализация может быть дорогостоящей и «более дорогой»?подвержен ошибкам, так как для этого требуется операция sqrt?

Тогда я прочитал, что сам atan2 может быть более дорогостоящим, чем acos, но более точным?А потом я также прочитал другие веб-сайты, предлагающие обратное :( много противоречивой информации, не уверен, что происходит с использованием acos или atan для вычисления угла между двумя векторами.

Что рекомендуется? И каковы преимущества/ вопросы для каждого использования?

Любая помощь будет оценена, спасибо!

1 Ответ

4 голосов
/ 05 июля 2019

Нет, atan2 не требует нормализованных векторов, и если ваши векторы еще не нормализованы, вы не должны предварительно нормализовать их, так как это может немного снизить точность. Функция работает правильно для любых входов, кроме (0,0).

Вы никогда не должны использовать acos для чего-либо.

...