search for in the  Language: Russian

# atan2

(PHP 4, PHP 5)

atan2Arc tangent of two variables

### Description

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

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.

User Contributed Notes
atan2
fred dot beck at rrd dot com
11-Jan-2009 08:39
```<?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 THIS N 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 ° */ ?>```
Monte Shaffer
08-Jun-2007 06:35
```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 places function 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);     }```
reubs at idsdatanet dot com
23-May-2003 08:01
```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. :)```