How to use atan2?

Are you asking how to use atan2, or how to implement it?

$\mathrm{atan2}(y,x)$ gives you the angle between the x-axis and the vector $(x,y)$, usually in radians and signed such that for positive $y$ you get an angle between $0$ and $\pi$, and for negative $y$ the result is between $-\pi$ and $0$.

It's named that way because when $x$ is positive, $\mathrm{atan2}(y,x)=\tan^{-1}(\frac{y}{x})$, which also explains (more or less) why the arguments are "backwards".

So if you have the vector $(\sqrt 3/2, -1/2)$ you can get its angle by $\mathrm{atan2}(-1/2, \sqrt 3/2)$ which is $-\pi/6$. You then know that for some positive $r$ it holds that $$(\sqrt 3/2, -1/2) = r(\cos(-\pi/6), \sin(-\pi/6))$$ (in fact it turns out that $r=1$ in this case, but atan2 does not tell you that).

As for implementing atan2 in the (these days somewhat unusual) case that you don't have a hardware implementation available, I think CORDIC should give excellent results with little effort. Alternatively, you can sacrifice precision for table space by splitting into octants, dividing the numerically smaller argument by the larger, and using a polynomial approximation of the arctangent between 0 and 1.


The slope of the straight line from the origin $(0,0)$ to the point $(a,b)$ is $b/a$ which takes on values from $-\infty$ to $+\infty$. But if you look at the angle between the line from $(0,0)$ to $(a,b)$, this angle can be anything from $0$ to $2\pi$. In particular, the line from $(0,0)$ to $(a,b)$ has the same slope as the line from $(0,0)$ to $(-a, -b)$ but the angle differs by $\pi$. The atan2 function was developed to take into account this difference. If you specify the angle as $\arctan(b/a)$ or $\text{atan}(b/a)$, you will get an answer between $-\pi/2$ and $+\pi/2$, that is, atan() cannot distinguish between the points $(a,b)$ and $(-a,-b)$ in terms of the angle. But if you specify the angle as: $\text{atan2}(a,b)$, you will get an answer between $0$ and $2\pi$ because the information about the signs of $a$ and $b$ (which tells you whether the point is in the first, second, third, or fourth quadrants) is not lost.

Tags:

Trigonometry