atan2 是否需要归一化向量?向量之间的角度使用 acos 或 atan 哪个更好?

Does atan2 required normalized vectors? Which is better to use acos or atan for angles between vectors?

计算两个向量之间的夹角时,我传统上使用acos,但这需要对两个向量进行归一化。 atan2 可以用来完成同样的事情(特别是atan2(b.y_, b.x_) - atan2(a.y_, a.x_)),这需要归一化向量吗?

如果 atan2 不需要归一化向量,那么使用它会更好吗,因为归一化可能代价高昂并且 'more' 由于它需要 sqrt 操作而容易出错?

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

推荐哪个?每种用法的 benefits/issues 是多少?

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

不,atan2 不需要规范化向量,如果您的向量尚未规范化,您不应该 pre-normalize 它们,因为这可能会稍微降低精度。该函数适用于 (0,0) 以外的任何输入。

你不应该使用 acos 做任何事。