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

lfg*_*gtm 2 c++ trigonometry angle vector-space atan

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

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

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

推荐哪个?以及每次使用的好处/问题是什么?

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

Sne*_*tel 6

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

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

  • 您可以添加“atan2”提供模 2-pi 的结果,与“acos”或“atan”相反。 (4认同)