颜色差异atan和atan2结果差异

时间:2018-07-22 16:29:50

标签: android algorithm math colors color-space

编辑:很显然,在采用许多不同的方法后,我在atan2中犯了一个错误,但仍然很想找到公式。

我已经阅读了多个主题和文章,但不明白为什么atan和atan2在转换为学位后会得出不同的结果。这是我的示例(来自CIElab颜色空间的 x -79.7751, y 2.677374209。在两种情况下不对代码进行任何更改的计算将给出错误的值:

atan(-79.7751 / 2.677374209) = -1,537 / or in degrees -88,07778762
atan2(-79.7751 , 2.677374209) = 3,1258 / or in degrees 179,0965

但是,该示例来自article,因此我们可以检查结果。基本上答案应该是271.9222。我已经在网上对atan进行了更正,现在得到了相同的结果,但是在x=y=0中对atan的价值仍然不确定,因此应该对{ {1}}。不幸的是,我没有发现任何可以产生相同结果并得到证明的东西(我的意思是可以在文献中找到)。 CIElab的大多数资源都说使用atan2 没有任何改正,并且正如您可以在下面看到的,在我的特殊情况下,这是不正确的。这是我得到的:

atan2

,你可以看到,̶̶接近,但没有雪茄。此外,它的不同之1度,一些̶c̶h̶a̶n̶g̶e̶.̶我的问题是如何精确地可以使校正{{1} }以获得适当的结果?

1 个答案:

答案 0 :(得分:1)

您的公式可能是错误的,具体取决于您使用的库。请参见atanatan2的C ++ std:

atan(y / x)返回范围{-pi / 2,pi / 2}
atan2(y,x)返回范围{0,2pi}

在两种情况下,您都交换了x,y。这具有以下效果: enter image description here