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

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

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

 

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

 

評価プログラム

 

実行結果

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#へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください