VB :: For Beginners

[VB.NET] 두 개의 좌표점 사이의 절대 각도를 측정하는 atan2

두 개의 좌표점 사이의 절대 각도를 측정하는 atan2

프로그래밍 언어에서 역탄젠트를 계산하는 함수 atan2 의 특징을 알아봅시다.

 

아크탄젠트란 무엇일까요?

아크탄젠트 (arctangent)역탄젠트라고도 불리우는, 탄젠트의 역함수입니다. 아크탄젠트 (arctangent) 를 이용하면 위에 첨부된 이미지에서의 θ 각도를 도출해낼 수 있습니다.

모든 프로그래밍 언어에는 아크탄젠트를 계산할 수 있도록 Math 모듈에 atan(y / x) 과 atan2(y, x) 함수를 지원합니다.

 

atan 과 atan2 의 차이점

atan 과 atan2 함수는 두 점 사이에 위치한 θ 변수의 절대각을 구할 때 사용된다는 측면에서 공통점을 가지고 있는데요, 두 가지의 다른 함수로 제공되는 목적에 대해 살펴보도록 하겠습니다.

 

atan은 두 점 사이의 탄젠트값을 받아 절대각을 -π / 2 ~ π / 2 의 Radian (라디안) 값으로 반환합니다.

 

atan2 를 사용하는 까닭

 

radian : 2.35619449019234
degree : 135

radian : 0.785398163397448
degree : 45
radian : -2.35619449019234
degree : -135
radian : -0.785398163397448
degree : -45

 

4 분면으로 이루어져 있고, + / – 극이 존재하는 데카르트 좌표계 (Cartesian Co-ordinate System) 에서 활용하면 실용적입니다.

atan2 함수는 좌표점 A 로 부터 좌표점 B 가 존재하는 상대적인 위치를 변수 (Parameter) 로 받아 계산되므로 x 값이나 y 값이 좌표계의 위치값으로서, 음수 값을 허용하기에 사용의 측면에서 유연합니다.

atan2 는 atan 함수와는 다르게, 사용되는 변수에 음수를 허용하므로 atan 함수와 비교했을 때 보다 효과적으로 사용할 수 있습니다.

 

소스 코드

아래 예시는 Visual Basic .NET 언어로 작성되었습니다.

 

 

        Dim aX As Double = Val(txtaX.Text)
        Dim aY As Double = Val(txtaY.Text)
        Dim bX As Double = Val(txtbX.Text)
        Dim bY As Double = Val(txtbY.Text)

        Dim x As Double = bX - aX
        Dim y As Double = bY - aY

        Dim radian = Math.Atan2(y, x)
        Dim degree = radian * 180 / Math.PI

        MessageBox.Show("radian : " & radian & vbNewLine & "degree : " & degree, "atan2 계산 결과")

 

실행 결과

좌표점 b 가 좌표점 a 보다 {2, 2} 만큼 위치한 경우

————————— atan2 계산 결과 —————————
radian : 0.785398163397448
degree : 45
————————— OK —————————


좌표점 b 가 좌표점 a 보다 {-2, -2} 만큼 위치한 경우


————————— atan2 계산 결과 —————————
radian : -2.35619449019234
degree : -135
————————— OK —————————

 

고맙습니다.

 

1 comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: