首页 > 解决方案 > atan2 是否需要归一化向量?向量之间的角度使用 acos 或 atan 哪个更好?

问题描述

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

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

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

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

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

标签: c++trigonometryanglevector-spaceatan

解决方案


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

你不应该使用acos任何东西。


推荐阅读