【C#】アークタンジェントの計算

下図のような角度(θ)を求める際にはアークタンジェントを計算しますが、C#ではSystem.MathクラスにAtanメソッド および Atan2メソッドが用意されています。

【C#】アークタンジェントの計算

public static double Atan(
	double d
)
public static double Atan2(
	double y,
	double x
)

AtanとAtan2の違いですが、見てわかるように、メソッドの引数が1つなのと、2つ。それとAtanがメソッドの戻り値が -π / 2 ~ π / 2 なのに対して、Atan2では -π ~ π となります。

評価プログラム

【C#】アークタンジェントの計算

実行結果

X = 1, Y = 1
Atan:0.785398163397448
Atan2:0.785398163397448

X = 0, Y = 1
Atan:1.5707963267949
Atan2:1.5707963267949

X = 0, Y = -1
Atan:-1.5707963267949
Atan2:-1.5707963267949

X = -1, Y = -1
Atan:0.785398163397448
Atan2:-2.35619449019234

X = 0, Y = 0
Atan:NaN
Atan2:0

まとめ

AtanとAtan2はC#に限らずC言語やExcelなどでも用意されているのですが、C#以外の言語では Atan(y / x) としたときに、x = 0 の時に0除算となるため、エラーになる場合が多いのですが、C#は何事も無かったかのうように計算しています。

といっても、Atanでは戻り値が -π / 2 ~ π / 2 に制限されてしまうため、個人的には角度を求める場合は、ほとんどAtan2を使っています。

C#へ戻る