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