두 개의 좌표점 사이의 절대 각도를 측정하는 atan2
프로그래밍 언어에서 역탄젠트를 계산하는 함수 atan2 의 특징을 알아봅시다.
아크탄젠트란 무엇일까요?

아크탄젠트 (arctangent) 는 역탄젠트라고도 불리우는, 탄젠트의 역함수입니다. 아크탄젠트 (arctangent) 를 이용하면 위에 첨부된 이미지에서의 θ 각도를 도출해낼 수 있습니다.
모든 프로그래밍 언어에는 아크탄젠트를 계산할 수 있도록 Math 모듈에 atan(y / x) 과 atan2(y, x) 함수를 지원합니다.
atan 과 atan2 의 차이점
atan 과 atan2 함수는 두 점 사이에 위치한 θ 변수의 절대각을 구할 때 사용된다는 측면에서 공통점을 가지고 있는데요, 두 가지의 다른 함수로 제공되는 목적에 대해 살펴보도록 하겠습니다.

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

degree : 135

degree : 45

degree : -135

degree : -45
4 분면으로 이루어져 있고, + / – 극이 존재하는 데카르트 좌표계 (Cartesian Co-ordinate System) 에서 활용하면 실용적입니다.
atan2 함수는 좌표점 A 로 부터 좌표점 B 가 존재하는 상대적인 위치를 변수 (Parameter) 로 받아 계산되므로 x 값이나 y 값이 좌표계의 위치값으로서, 음수 값을 허용하기에 사용의 측면에서 유연합니다.
atan2 는 atan 함수와는 다르게, 사용되는 변수에 음수를 허용하므로 atan 함수와 비교했을 때 보다 효과적으로 사용할 수 있습니다.
소스 코드
아래 예시는 C# 언어로 작성되었습니다.

double aX = Double.Parse(txtaX.Text);
double aY = Double.Parse(txtaY.Text);
double bX = Double.Parse(txtbX.Text);
double bY = Double.Parse(txtbY.Text);
double x = bX - aX;
double y = bY - aY;
double radian = Math.Atan2(y, x);
double degree = radian * 180 / Math.PI;
MessageBox.Show("radian : " + radian + Environment.NewLine + "degree : " + degree, "atan2 계산 결과");
실행 결과
좌표점 b 가 좌표점 a 보다 {3, 3} 만큼 위치한 경우
————————— atan2 계산 결과 —————————
radian : 0.785398163397448
degree : 45
————————— OK —————————
좌표점 b 가 좌표점 a 보다 {-3, 3} 만큼 위치한 경우
————————— atan2 계산 결과 —————————
radian : 2.35619449019234
degree : 135
————————— OK —————————
고맙습니다.