Math.atan2()

Math.atan2() 関数は、Math.atan2(y, x) に対して点 (0, 0) から点 (x, y) までの半直線と、正の x 軸の間の平面上での角度 (ラジアン単位) を返します。

試してみましょう

構文

Math.atan2(y, x)

引数

y

点の y 座標です。

x

点の x 座標です。

返値

点 (0, 0) から点 (x,y) までの半直線と、正の x 軸の間の ( [ - π , π ] [-\pi, \pi] 内の) ラジアン単位の角度です。

解説

Math.atan2() メソッドは、(x, y) 座標のシータ角を表す -π から π までの数値を返します。これは、ラジアン単位で表された、正の X 軸と点 (x, y) の間の反時計回りの角度です。このメソッドへ渡す引数は、初めに y 座標、次に x 座標であることに注意してください。

A simple diagram showing the angle returned by atan2(y, x)

Math.atan2() は、xy が別々に渡され、 Math.atan() は 2 つの引数の比率が渡されます。

atan2()Math の静的メソッドであるため、生成した Math オブジェクトのメソッドとしてではなく、常に Math.atan2() として使用するようにしてください (Math はコンストラクターではありません)。

Math.atan2() の使用

js
Math.atan2(90, 15); // 1.4056476493802699
Math.atan2(15, 90); // 0.16514867741462683

Math.atan2(±0, -0);               // ±PI.
Math.atan2(±0, +0);               // ±0.
Math.atan2(±0, -x);               // ±PI for x > 0.
Math.atan2(±0, x);                // ±0 for x > 0.
Math.atan2(-y, ±0);               // -PI/2 for y > 0.
Math.atan2(y, ±0);                // PI/2 for y > 0.
Math.atan2(±y, -Infinity);        // ±PI for finite y > 0.
Math.atan2(±y, +Infinity);        // ±0 for finite y > 0.
Math.atan2(±Infinity, x);         // ±PI/2 for finite x.
Math.atan2(±Infinity, -Infinity); // ±3*PI/4.
Math.atan2(±Infinity, +Infinity); // ±PI/4.

仕様書

Specification
ECMAScript Language Specification
# sec-math.atan2

ブラウザーの互換性

BCD tables only load in the browser

関連情報