Einstein 氏の「さぼり」 ```
arctan と atan2 の違い ― 象限による角度の判定を比較
角度を求めるとき、 arctan と atan2 は 似たように見えます。 しかし、両者には重要な違いがあります。
特に重要なのが、 「どの象限にあるのかを判定できるか」 という点です。
1.arctan(逆正接)
arctan は、基本的には
のように、y / x という比から角度を求めます。
ここで問題になるのが、 x と y の符号を別々には保持していない ことです。
例えば、
なら、(x, y) = (1, 1) でも (x, y) = (-1, -1) でも比は同じ 1 になります。
したがって、単純な arctan だけでは 第1象限と第3象限を区別できません。
2.atan2
atan2 は、通常
のように、 x と y の2つを別々に与えます。
そのため、 x と y の符号から点がどの象限にあるのかを判断できます。
3.象限による違い
| 象限 | x | y | y / x | arctan(y/x) | atan2(y,x) |
|---|---|---|---|---|---|
| 第1象限 | + | + | + | +角 | 0 ~ 90° |
| 第2象限 | − | + | − | −角 | 90 ~ 180° |
| 第3象限 | − | − | + | +角 |
−180 ~ −90°
または 180 ~ 270° |
| 第4象限 | + | − | − | −角 |
−90 ~ 0°
または 270 ~ 360° |
4.最も重要な違い
arctan は「傾き(y/x)」から角度を求める方法。
atan2 は「x と y の符号を含めて方向」を求める方法。
```したがって、座標平面上の点の 方向角を正しく扱いたい場合には atan2 が非常に便利 です。
5.具体例
次の2点を考えます。
y/x = 1
arctan(1) = 45°
atan2(1,1) = 45°
y/x = 1
arctan(1) = 45°
atan2(-1,-1) = -135°
A と B は原点を中心として 180°反対方向にあります。 ところが y/x だけを見ると、どちらも 1 です。
ここに、 arctan と atan2 の大きな違い があります。
6.単位円で考える
単位円上の点を
とすると、
となります。
しかし tanθ は 180°ごとに同じ値になります。
そのため、 tan の値だけでは角度を一意に決められません。
atan2 は x と y を同時に扱うことで、 この象限情報を保持したまま方向角を求めます。
7.まとめ
| 項目 | arctan | atan2 |
|---|---|---|
| 入力 | y/x | y と x |
| 象限情報 | 単独では判別できない | x・y の符号から判別できる |
| 方向角 | 制限された範囲 | 象限を含めて扱える |
| 用途 | 傾きから角度を求める | 座標から方向角を求める |