c++ - atan2 是否需要归一化向量?向量之间的角度使用 acos 或 atan 哪个更好?
问题描述
在计算两个向量之间的角度时,我传统上使用 acos,但这需要对两个向量进行归一化。atan2 可用于完成相同的任务(特别是atan2(b.y_, b.x_) - atan2(a.y_, a.x_)
),这是否需要归一化向量?
如果 atan2 不需要归一化向量,这会更好用吗,因为归一化可能成本高昂且“更”容易出错,因为它需要 sqrt 操作?
然后我读到atan2本身可能比acos更昂贵,但更准确?然后我还阅读了其他建议相反的互联网 :( 很多相互矛盾的信息,不确定使用 acos 或 atan 计算两个向量之间的角度有什么关系。
推荐哪个?每种用途的好处/问题是什么?
任何帮助将不胜感激,谢谢!
解决方案
不,atan2
不需要归一化向量,如果您的向量尚未归一化,则不应对它们进行预归一化,因为这可能会稍微降低精度。该函数适用于 (0,0) 以外的任何输入。
你不应该使用acos
任何东西。
推荐阅读
- html - 尝试使用 VBA 自动化 Internet Explorer 网页中的手动输入/过程,但遇到窗口弹出值输入
- keycloak - 如何在 Keycloak 中更改主题选择器提供程序
- android - 使用 RecycleView 加载下一页帖子
- javascript - reduce 函数中的累加器为空或没有数组数据
- ionic5 - 离子Macincloud
- python - 硒上的 element.click() 不起作用(菜鸟需要帮助)
- sql - 执行接受 2 个输入 arg 并返回 2 个输出的 oracle 存储过程
- r - 如何计算R中数据框的jaccard相似度?
- python - 在同一列但不同的行中解析来自 Excel 的数据?
- asp.net-core - 在 nopCommerce 中实现通用事件侦听器