PHP 7.4.22 Released!

# atan2

(PHP 4, PHP 5, PHP 7, PHP 8)

atan2Arc tangent of two variables

### Description

atan2(float `\$y`, float `\$x`): float

This function calculates the arc tangent of the two variables `x` and `y`. It is similar to calculating the arc tangent of `y` / `x`, except that the signs of both arguments are used to determine the quadrant of the result.

The function returns the result in radians, which is between -PI and PI (inclusive).

### Parameters

`y`

Dividend parameter

`x`

Divisor parameter

### Return Values

The arc tangent of `y`/`x` in radians. add a note

### User Contributed Notes 5 notes

12
reubs at idsdatanet dot com
18 years ago
``` Just a note:PHP's atan2 function receives parameters in (y,x) and Excel receives it in (x,y) format. Just in case you are porting formulas across. :) ```
fred dot beck at rrd dot com
12 years ago
``` <?php/** *    Given an origin point of (0,0) and a destination point \$x,\$y *  somewhere on an axis grid, compass() determines the compass *  heading(direction) of the destination point from the origin *    *  HOWEVER, atan2(y,x)'s natural compass thinks east is north, * *  {135}-------{ 90}-------{45} *      | +-----[ +y]-----+ |  *      | |               | |  *      | |               | |  *  {180} [-x]  [0,0]  [+x] {0} <--------- North ? *      | |               | |  *      | |               | |  *      | +-----[ -y]-----+ | * {-135}-------{-90}-------{-45} * * *    SO, we simply transpose the (y,x) parameters to atan2(x,y) *     which will both rotate(left) and reflect(mirror) the compass. * *  Which gives us this compass * *  {-45}-------{ 0 }-------{45} *      | +-----[ +y]-----+ |  *      | |               | |  *      | |               | |  *  {-90} [-x]  [0,0]  [+x] {90} *      | |               | |  *      | |               | |  *      | +-----[ -y]-----+ | * {-135}-------{180}-------{135} * *  FINALLY,` we check if param \$x was indeed a negative number, *  if so we simply add 360 to the negative angle returned by atan2() *    */function compass(\$x,\$y)    {        if(\$x==0 AND \$y==0){ return 0; } // ...or return 360        return (\$x < 0)        ? rad2deg(atan2(\$x,\$y))+360      // TRANSPOSED !! y,x params        : rad2deg(atan2(\$x,\$y));     }function polar(\$x,\$y)    {        \$N = (\$y>0)?'N':'';        \$S = (\$y<0)?'S':'';        \$E = (\$x>0)?'E':'';        \$W = (\$x<0)?'W':'';                return \$N.\$S.\$E.\$W;    }function show_compass(\$x,\$y)     {         return '<BR>'             .polar(\$x,\$y)             .' compass( x='.\$x.', y='.\$y.' )= '             .number_format(compass(\$x,\$y),3).'&deg';     }echo show_compass(0,3);echo show_compass(.06,3);echo show_compass(3,3);echo show_compass(3,.06);echo show_compass(3,0);echo show_compass(3,-.06);echo show_compass(3,-3);echo show_compass(.06,-3);echo show_compass(0,-3);echo show_compass(-.06,-3);echo show_compass(-3,-3);echo show_compass(-3,-.06);echo show_compass(-3,0);echo show_compass(-3,.06);echo show_compass(-3,3);echo show_compass(-.06,3);/* RENDERS THISN compass( x=0, y=3 )= 0 °NE compass( x=0.06, y=3 )= 1.14576283818 °NE compass( x=3, y=3 )= 45 °NE compass( x=3, y=0.06 )= 88.8542371618 °E compass( x=3, y=0 )= 90 °SE compass( x=3, y=-0.06 )= 91.1457628382 °SE compass( x=3, y=-3 )= 135 °SE compass( x=0.06, y=-3 )= 178.854237162 °S compass( x=0, y=-3 )= 180 °SW compass( x=-0.06, y=-3 )= 181.145762838 °SW compass( x=-3, y=-3 )= 225 °SW compass( x=-3, y=-0.06 )= 268.854237162 °W compass( x=-3, y=0 )= 270 °NW compass( x=-3, y=0.06 )= 271.145762838 °NW compass( x=-3, y=3 )= 315 °NW compass( x=-0.06, y=3 )= 358.854237162 °*/?> ```
mirellastitan at gmail dot com
4 years ago
``` The russian translation for this article contains a translation error.Делитель and Делимое should be visa versa:Делимое is the dividendДелитель is the divisorThank you in advance for fixing this issue. It's quite confusing ```
Monte Shaffer
14 years ago
``` Here is a function that will return a new point [Rotate around non-origin pivot point](x,y) is current point (cx,cy) is pivot point to rotate=a= is angle in degrees    \$_rotation     = 1;      # -1 = counter, 1 = clockwise    \$_precision    = 2;      # two decimal placesfunction returnRotatedPoint(\$x,\$y,\$cx,\$cy,\$a)    {    # http://mathforum.org/library/drmath/view/63184.html    global \$_rotation;     # -1 = counter, 1 = clockwise    global \$_precision;    # two decimal places                // radius using distance formula            \$r = sqrt(pow((\$x-\$cx),2)+pow((\$y-\$cy),2));            // initial angle in relation to center            \$iA = \$_rotation * rad2deg(atan2((\$y-\$cy),(\$x-\$cx)));            \$nx = number_format(\$r * cos(deg2rad(\$_rotation * \$a + \$iA)),\$_precision);            \$ny = number_format(\$r * sin(deg2rad(\$_rotation * \$a + \$iA)),\$_precision);    return array("x"=>\$cx+\$nx,"y"=>\$cy+\$ny);    } ```
-1
andyidol at gmail dot com
10 years ago
``` This function will return degree by vertex coordinates in general trigonometrical coordinate system where zero is located at position (1, 0), 90' at (0, 1), 180' at (-1, 0) and so on.<?phpfunction GetDegree(\$x, \$y){  // we don't want to cause division by zero  if(\$x == 0) \$x = 1 / 10000;        \$deg = rad2deg(atan(abs(\$y / \$x)));        if(\$y >= 0) \$deg = \$x < 0 ? 180 - \$deg : \$deg;  else        \$deg = \$x < 0 ? 180 + \$deg : 360 - \$deg;        return \$deg;      }?> ``` 