c++ - atan2 是否需要归一化 vector ? vector 之间的角度使用 acos 或 atan 哪个更好?

标签 c++ trigonometry angle vector-space atan

在计算两个 vector 之间的角度时,我传统上使用acos,但这需要对两个 vector 进行归一化。 atan2 可用于完成相同的任务(特别是 atan2(b.y_, b.x_) - atan2(a.y_, a.x_)),这是否需要归一化 vector ?

如果 atan2 不需要归一化 vector ,那么使用它会更好吗,因为归一化可能成本高昂并且“更”容易出错,因为它需要 sqrt 操作?

然后我读到 atan2 本身可以比 acos 更昂贵,但更准确?然后我还阅读了其他建议相反的互联网 :( 很多相互矛盾的信息,不确定使用 acos 或 atan 计算两个 vector 之间的角度是什么。

推荐哪个?每种用法的好处/问题是什么?

任何帮助将不胜感激,谢谢!

最佳答案

不,atan2 不需要归一化 vector ,如果您的 vector 尚未归一化,您不应该预先归一化它们,因为这可能会稍微降低精度。该函数适用于 (0,0) 以外的任何输入。

你不应该将 acos 用于任何事情。

关于c++ - atan2 是否需要归一化 vector ? vector 之间的角度使用 acos 或 atan 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56902556/

相关文章:

javascript - 我需要帮助优化功能

c++ - C++ 的 RDP 协议(protocol)

c++ - 如何在 lambda 表达式中传递变量?

python - pygame音频代码不起作用

audio - 使用 SDL 库播放使用 sinf 函数生成的原始正弦波

java - 如何在 java 3d 中旋转相机/viewPlatform

c# - OpenCV - 如何检测和测量两帧之间的角度?

c++ - 如果存在 boost 则有条件编译

c++ - 非静态常量数据成员

c++ - 弹跳物体的三角函数