PHPのatan2()関数とは?定義・構文・実行例をわかりやすく解説
定義と使い方
atan2() 関数は、2つの変数から逆正接(アークタンジェント)を計算する関数です。
atan2(y, x) は、2つの数値 y と x に対するアークタンジェントを返します。単純に atan(y/x) を計算する方法と似ていますが、atan2() では x と y の両方の符号が考慮されるため、結果がどの象限に属するかを正しく判定できる点が大きな特徴です。引数の値に応じた戻り値は以下のとおりです。
- x > 0 の場合:atan(y/x)
- x < 0 かつ y ≥ 0 の場合:atan(y/x) + π
- x < 0 かつ y < 0 の場合:atan(y/x) − π
- x = 0 かつ y > 0 の場合:π/2
- x = 0 かつ y < 0 の場合:−π/2
- x = 0 かつ y = 0 の場合:0
この関数は、ラジアン単位の角度を float 型(浮動小数点数)として返します。
構文
atan2 ( float $y , float $x ) : float
パラメータ
| 番号 | パラメータと説明 |
|---|---|
| 1 | y 割られる数(被除数) |
| 2 | x 割る数(除数) |
戻り値
PHP の atan2() 関数は、ラジアン単位の角度を浮動小数点数(float)として返します。
対応する PHP バージョン
この関数は、PHP 4.x、PHP 5.x、PHP 7.x のすべてのバージョンで利用できます。
使用例1:atan2(1, 2) を計算する
<?php
$y = 1;
$x = 2;
$val = atan2($y, $x);
echo "atan2(" . $y . "," . $x . ") = " . $val;
?>
出力結果
上記のコードを実行すると、次の結果が出力されます。
atan2(1,2) = 0.46364760900081
使用例2:atan2(5, -5) を計算する
<?php
$y = 5;
$x = -5;
$val = atan2($y, $x);
echo "atan2(" . $y . "," . $x . ") = " . $val;
?>
出力結果
atan2(5,-5) = 2.3561944901923
使用例3:atan2(5, 0) を計算する
次のプログラムは atan2(5, 0) を計算し、π/2(M_PI_2)に相当する値を返します。
<?php
$y = 5;
$x = 0;
$val = atan2($y, $x);
echo "atan2(" . $y . "," . $x . ") = " . $val;
?>
出力結果
atan2(5,0) = 1.5707963267949
使用例4:atan2(0, 0) を計算する
次の例では atan2(0, 0) を計算し、0 が返されます。
<?php
$y = 0;
$x = 0;
$val = atan2($y, $x);
echo "atan2(" . $y . "," . $x . ") = " . $val;
?>
出力結果
atan2(0,0) = 0
-
PHPのatan2()関数とは?定義・構文・実行例をわかりやすく解説
定義と使い方atan2() 関数は、2つの変数から逆正接(アークタンジェント)を計算する関数です。atan2(y, x) は、2つの数値 y と x に対するアークタンジェントを返します。単純に atan(y/x) を計算する方法と似ていますが、atan2() では x と y の両方の符号が考慮されるため、結果がどの象限に属するかを正しく判定できる点が大きな特徴です。引数の値に応じた戻り値は以下のとおりです。x > 0 の場合:atan(y/x)x < 0 かつ y ≥ 0 の場合:atan(y/x) + πx < 0 かつ y < 0 の場合:atan(y/x) −
-
PHPのatan2()関数とは?構文・パラメータ・戻り値をわかりやすく解説
atan2() 関数は、2つの変数から逆正接(アークタンジェント)を計算して返すPHPの数学関数です。通常の atan() 関数と異なり、引数の符号から点がどの象限に位置するかを自動的に判定できるため、座標から角度を求める処理などで活用されます。 構文 atan2(val1, val2) パラメータ val1 − 被除数(割られる数、分子にあたる値) val2 − 除数(割る数、分母にあたる値) 戻り値 atan2() 関数は、val1 ÷ val2 の逆正接(アークタンジェント)をラジアン単位で返します。戻り値は必ず -Pi(約 -3.14159)〜 Pi(約 3.14159) の範囲内