前回のSVG表示するやつを少し変えたものをwonderflに投稿してみました。
回転させる角度を求めるのに、最初Math.atan2メソッドを知らなくて、Math.atanで事象ごとに場合分けをして求めようとしてたら、無駄に苦労して涙目。
というわけでatanの復習。
atanつまりarctan(アークタンジェント)はtan(タンジェント)の逆関数。
直角三角形の2辺から、角度(ラジアン)を求めることができます。
今回のプログラムをatanを使おうとすると、単純にMath.atan(dy / dx)では角度が求められない場合がでてくる。一番わかり易いのだとdxが0の場合とか。
Math.atan2だとそんな問題が解決できる。ActionScriptのatan2がどう実装されているか知りませんが、一般的に、atan2はこのようになっているようです。
atan2(y, x) =
{
atan(y/x) (x>0),
π-atan(|y/x|) (x<0 かつ y>0),
-(π-atan(|y/x|)) (x<0 かつ y<0),
0 (x<=0 かつ y=0),
π/2 (x=0 かつ y>0),
-π/2 (x=0 かつ y<0)
}
ちゃんと0のときも定義されているので使いやすい。