座標変換などでよく使われる、xyの二値から角度を求めるような場合にはAtan2メソッドを使用することができます。 Atan2メソッドは-π≦θ≦πの範囲で結果を返します。 また、Atanメソッドとは異なり、Atan2メソッドは引数の象限を考慮します。 そのため、引数y, xの値によってはAtan2メソッドとAtanメソッドで異なる結果となる場合があります。 また、Atan2メソッドでは、引数をy, xの順で指定する点に注意してください。

Atan2メソッドを使って座標(x, y)とx軸のなす角を求める
Imports System

Class Sample
  Shared Sub Main()
    Dim x, y As Double

    x = 1.0 : y = 1.0

    Console.WriteLine("({0}, {1}) : {2}", x, y, Math.Atan2(y, x))
    Console.WriteLine("({0}, {1}) : {2}", x, y, Math.Atan(y / x))
    Console.WriteLine()

    x = 0.0 : y = 1.0

    Console.WriteLine("({0}, {1}) : {2}", x, y, Math.Atan2(y, x))
    Console.WriteLine("({0}, {1}) : {2}", x, y, Math.Atan(y / x))
    Console.WriteLine()

    x = -1.0 : y = -1.0

    Console.WriteLine("({0}, {1}) : {2}", x, y, Math.Atan2(y, x))
    Console.WriteLine("({0}, {1}) : {2}", x, y, Math.Atan(y / x)) ' AtanメソッドとAtan2メソッドで結果が異なる
    Console.WriteLine()
  End Sub
End Class
実行結果
(1, 1) : 0.785398163397448
(1, 1) : 0.785398163397448

(0, 1) : 1.5707963267949
(0, 1) : 1.5707963267949

(-1, -1) : -2.35619449019234
(-1, -1) : 0.785398163397448

複素数を扱う場合はComplex構造体を使うことができます。 Complex構造体では直交形式・極座標形式の複素数を扱い、また相互に変換することもできます。 詳しくは複素数型を参照してください。

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。