C 从atan2转换为atan

C 从atan2转换为atan,c,trigonometry,C,Trigonometry,所以我看到一篇帖子,问如何从atan转换到atan2。但我没有看到相反的情况。那么,如何从atan2转换为atan呢?非常感谢您的帮助 实际上,我非常惊讶,我在堆栈溢出的任何地方都找不到这个问题(我的搜索技能可能有限lol)。我想走这条路,因为atan2在数值上似乎比atan更稳定(但我可能错了)。你可以做与在中所做相反的事情 你能提供另一篇文章的链接吗?你想在atan2()方面实现atan()?它只是atan(x)==atan2(x,1.0)。(另一个方法是另一个问题所解释的。)但我想不出这在

所以我看到一篇帖子,问如何从atan转换到atan2。但我没有看到相反的情况。那么,如何从atan2转换为atan呢?非常感谢您的帮助


实际上,我非常惊讶,我在堆栈溢出的任何地方都找不到这个问题(我的搜索技能可能有限lol)。我想走这条路,因为atan2在数值上似乎比atan更稳定(但我可能错了)。

你可以做与在中所做相反的事情


你能提供另一篇文章的链接吗?你想在
atan2()
方面实现
atan()
?它只是
atan(x)==atan2(x,1.0)
。(另一个方法是另一个问题所解释的。)但我想不出这在什么意义上比仅仅调用
atan(x)
本身“在数值上更稳定”,而且由于冗余的除法,它可能会更慢。
atan2
只有在有单独的
x
y
坐标时才有用。如果您只有
y/x
,那么
atan2
不会为您做任何
atan
还没有做的事情。这是一个好问题,您是否有表单
x
y
的输入,或者只有一个数字?
返回0
double myatan(double y, double x)
{
    double pi = 3.14159265358979323846;
    if (x >= 0)
        return atan2(y, x);
    else if (y >= 0)
        return atan2(y, x) - pi;
    else
        return atan2(y, x) + pi;
}