atan2の罠(違)

正接関数(ArcTan)の定義域は、-∞ 〜 ∞ である。値域は、-π/2 〜 π/2 である。これは数学的な定義である。正接逆関数として解釈した場合は、値域に関して自由度が存在するが、-π/2 〜 π/2 だと全区間で連続になるので都合がよい。

C++にも標準関数としてatanとatan2が存在する。atanは数学の定義そのままだが、atan2はちょっと違う。atan2( int y, int x ) なので、atan( y/x )だとずっと思っていました。
違いました。
そもそも値域がちがう。逆性接関数は、-π/2 〜 π/2 なのに対し、atan2は、-π 〜 πでした。まあ、冷静に考えてみたらあたりまえだった。atan2は解析関数というよりは幾何学的な関数である。(x,y)のベクトルとX軸との角度を返す関数というのが正しい解釈だろう。逆性接関数テーブル化計画においてこれを勘違いして嘘プログラムを書いてしまいましたとさ・・・。(おかげで仲間からバグと認識されてしまいました(涙))