При вычислении угла между двумя векторами я традиционно использовал acos, но для этого требуется, чтобы два вектора были нормализованы. atan2 можно использовать для достижения того же (в частности, atan2(b.y_, b.x_) - atan2(a.y_, a.x_)
), требуются ли для этого нормализованные векторы?
Если atan2 не требует нормализованных векторов, было бы лучше использовать это, поскольку нормализация может быть дорогостоящей и более подверженной ошибкам, поскольку требует операции sqrt?
Потом прочитал, что сам atan2 может быть дороже acos, но точнее? И затем я также прочитал другие сети, предлагающие обратное :( много противоречивой информации, не знаю, в чем дело с использованием acos или atan для вычисления угла между двумя векторами.
Что рекомендуется? и каковы преимущества / проблемы для каждого использования?
Любая помощь будет оценена, спасибо!
atan2
не требует нормализованных векторов - person Damien   schedule 05.07.2019atan2()
не требует масштабирования / нормализации входных данных, если хотя бы один аргумент не равен нулю. Рекомендуемое использование зависит от того, как вводятся входные значения. Простой совет, например, никогда не использоватьacos()
, просто тупой - навык выбирает подходящий вариант в зависимости от того, как вводятся / вычисляются данные, а также от требуемой формы вывода. Иногда может быть уместно несколько альтернатив. - person Peter   schedule 05.07.2019