Elementwise arc tangent of x1/x2 choosing the quadrant correctly.
The quadrant (ie. branch) is chosen so that arctan2(x1, x2) is the signed angle in radians between the line segments (0,0) - (1,0) and (0,0) - (x2,x1). This function is defined also for x2 = 0.
arctan2 is not defined for complex-valued arguments.
Parameters: | x1 : array_like, real-valued
x2 : array_like, real-valued
|
---|---|
Returns: | angle : ndarray
|
Notes
arctan2 is identical to the atan2 function of the underlying C library. The following special values are defined in the C standard [2]:
x1 | x2 | arctan2(x1,x2) |
---|---|---|
+/- 0 | +0 | +/- 0 |
+/- 0 | -0 | +/- pi |
> 0 | +/-inf | +0 / +pi |
< 0 | +/-inf | -0 / -pi |
+/-inf | +inf | +/- (pi/4) |
+/-inf | -inf | +/- (3*pi/4) |
Note that +0 and -0 are distinct floating point numbers.
References
[R12] | Wikipedia, “atan2”, http://en.wikipedia.org/wiki/Atan2 |
[R13] | ISO/IEC standard 9899:1999, “Programming language C”, 1999. |
Examples
Consider four points in different quadrants:
>>> x = np.array([-1, +1, +1, -1])
>>> y = np.array([-1, -1, +1, +1])
>>> np.arctan2(y, x) * 180 / np.pi
array([-135., -45., 45., 135.])
Note the order of the parameters. arctan2 is defined also when x2 = 0 and at several other special points, obtaining values in the range [-pi, pi]:
>>> np.arctan2([1., -1.], [0., 0.])
array([ 1.57079633, -1.57079633])
>>> np.arctan2([0., 0., np.inf], [+0., -0., np.inf])
array([ 0. , 3.14159265, 0.78539816])