atan2関数

広告

atan2関数は座標の逆正接(アークタンジェント)を計算して返します。

指定した座標の逆正接(アークタンジェント)を計算して返します。

パラメータ:
  y  y座標
  x  x座標
戻り値:
  逆正接(アークタンジェント)の値。単位はラジアン

引数に指定した原点と座標(x, y)、そして座標からX座標へ降ろした点の3点からなる三角形を対象として逆正接(アークタンジェント)を計算します。引数がY座標からとなっていることに注意して下さい。

例えば座標(1, 1)とした場合、角度は45度になりタンジェントはtan(45度) = 1 / 1 = 1となります。atan2関数はタンジェントの結果が1となるような角度を取得するために、タンジェントの結果ではなく座標を指定します。つまりこの関数は座標を指定することで、原点からその座標に引いた直線のX軸からの角度を取得することができます。

実際には次のように使用します。

var rad = Math.atan2(1, 1);

なおX座標が0だった場合、Y座標も0ならば角度は0、Y座標が正の値ならば90度、Y座標が負の値ならば-90度となります。

サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script15_1.js">
</script>

</body>
</html>
function print(str){
  document.write(str + "<br />");
}

document.write("<p>");

var n1 = Math.atan2(4, 4);
print("atan(4/4) = " + n1 + "ラジアン(" + n1/(Math.PI / 180) + "度)");

var n2 = Math.atan2(6, 8);
print("atan(8/6) = " + n2 + "ラジアン(" + n2/(Math.PI / 180) + "度)");

var n3 = Math.atan2(1, 0);
print("atan(1/0) = " + n3 + "ラジアン(" + n3/(Math.PI / 180) + "度)");

var n4 = Math.atan2(0, 0);
print("atan(0/0) = " + n4 + "ラジアン(" + n4/(Math.PI / 180) + "度)");

var n5 = Math.atan2(-1, 0);
print("atan(-1/0) = " + n5 + "ラジアン(" + n5/(Math.PI / 180) + "度)");

document.write("</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p15-1

( Written by Tatsuo Ikura )