c++中的atan和atan2有什么区别?


当前回答

Std::atan2允许计算所有四个象限的arctan。Std::atan只允许从象限1和4计算。

其他回答

下面的Mehrwolf是正确的,但这里有一个启发式可能会有所帮助:

如果你在一个二维坐标系中工作,这是编程反切线的常见情况,你肯定应该使用atan2。它会给出完整的2范围的角度并为你照顾到x坐标中的0。

另一种说法是,atan(y/x)总是错的。只有当参数不能被认为是y/x时才使用atan。

Std::atan2允许计算所有四个象限的arctan。Std::atan只允许从象限1和4计算。

使用atan2,您可以确定这里所述的象限。

如果需要,可以使用atan2 确定象限。

atan(x)返回x的arctan的主值,用弧度表示。

atan2(y,x)返回y/x的arctan的主值,用弧度表示。

请注意,由于符号的模糊性,函数不能确定角度落在哪个象限,仅通过其正切值(atan)确定。如果需要确定象限,可以使用atan2。

另一件需要提及的事情是,当使用atan(y / x)这样的表达式计算切线时,atan2更稳定,而x等于0或接近0。