지평좌표계로 변환할 때, 방위각을 계산하면 다음과 같다.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Public Function GetAzimuthRadian(ByVal x As Single, ByVal y As Single) As Single     '천구상의 방위각을 계산한다.     '이 때 방위각은 y축의 양의 방향을 기준으로 시계방향으로 잰각     '즉, 시각좌표계에서 사용해야 함.     '     '1) 특수한 경우의 방위각 계산     If Math.Abs(x) < Single.Epsilon Then         If y > 0 Then             Return 0.0F '--> 예) (0,1)의 방위각은 0도         Else             Return Math.PI '--> 예) (0,-1)의 방위각은 180도         End If     End If     '     If Math.Abs(y) < Single.Epsilon Then         Return Math.Sign(x) * Math.PI / 2 '--> 예) (1,0)은 90도, (-1,0)은 -90도     End If     '     '2) 일반적인 경우의 방위각 계산     Dim v1 As Single = Math.Atan(Math.Abs(x / y))     If y > 0 Then         Return Math.Sign(x) * v1 '--> 예) (1,1)은 45도, (-1,1)은 -45도     Else         Return Math.Sign(x) * (Math.PI - v1) '--> 예) (1,-1)은 135도, (-1,-1)은 -135도     End If     ' End Function | 
If문에서 발생할 확률이 더 많은 것을 전진배치하면, 다음과 같이 된다.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Public Function GetAzimuthRadian(ByVal x As Single, ByVal y As Single) As Single     '천구상의 방위각을 계산한다.     '이 때 방위각은 y축의 양의 방향을 기준으로 시계방향으로 잰각     '즉, 시각좌표계에서 사용해야 함.     '     If Math.Abs(x) >= Single.Epsilon Then         If Math.Abs(y) >= Single.Epsilon Then             '2) 일반적인 경우의 방위각 계산             Dim v1 As Single = Math.Atan(Math.Abs(x / y))             If y > 0 Then                 Return Math.Sign(x) * v1 '--> 예) (1,1)은 45도, (-1,1)은 -45도             Else                 Return Math.Sign(x) * (Math.PI - v1) '--> 예) (1,-1)은 135도, (-1,-1)은 -135도             End If         Else             '1) 특수한 경우의 방위각 계산             Return Math.Sign(x) * Math.PI / 2 '--> 예) (1,0)은 90도, (-1,0)은 -90도         End If     Else         '1) 특수한 경우의 방위각 계산         If y > 0 Then             Return 0.0F '--> 예) (0,1)의 방위각은 0도         Else             Return Math.PI '--> 예) (0,-1)의 방위각은 180도         End If     End If         ' End Function | 
이보다 더 간단히 정리하면 다음과 같다.
| 1 2 3 4 5 6 7 8 | Public Function GetAzimuthRadian(ByVal x As Single, ByVal y As Single) As Single     '천구상의 방위각을 계산한다.     '이 때 방위각은 y축의 양의 방향을 기준으로 시계방향으로 잰각     '즉, 시각좌표계에서 사용해야 함.     '     Return Math.Atan2(x, y)     ' End Function | 
