edo1z blog

プログラミングなどに関するブログです

Javascript Math.atan2() X軸からポイントまでの角度を取得

Math.atan2(y, x)

http://www.ajaxtower.jp/js/math_class/index15.html
ここの説明が分かり易そうだ。

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

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


ちょっと試してみよう。

var x = 10, y = 10;
document.write(Math.atan2(y,x));

結果はラジアンなので、360度表記に直してみよう。
ラジアンπが180度なので、ラジアンをπで割って180で書ければいいだろう。

var x = 10, y = 10, rad, deg;
rad = Math.atan2(y,x);
deg = rad/Math.PI*180;
document.write(deg);

原点を0,0とすると、x,yが10,10なので、直角二等辺三角形になるということだな。

では、x=1,y=ルート3にしてみよう。

var x = 1, y = Math.sqrt(3), rad, deg;
rad = Math.atan2(y,x);
deg = rad/Math.PI*180;
document.write(deg);

やはり60度だな。HTML5 Canvasの場合は、左上を原点とするから、そこだけ気をつけないといけないな。