Movatterモバイル変換


[0]ホーム

URL:


PHP 8.5.0 Alpha 2 available for testing
    atanh »
    « atan

    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 variablesx andy. It is similar to calculating the arc tangent ofy /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 ofy/x in radians.

    See Also

    Found A Problem?

    Learn How To Improve This PageSubmit a Pull RequestReport a Bug
    add a note

    User Contributed Notes2 notes

    reubs at idsdatanet dot com
    22 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
    16 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()
    *
    */
    functioncompass($x,$y)
    {
    if(
    $x==0AND$y==0){ return0; }// ...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 °

    */

    ?>
    add a note
    To Top
    and to navigate •Enter to select •Esc to close
    PressEnter without selection to search using Google

    [8]ページ先頭

    ©2009-2025 Movatter.jp