Programming/프로그래밍 이론
[프로그래밍 이론] 두 점 사이의 절대각도를 재는 atan2
SpiralMoon
2020. 6. 3. 01:08
반응형
두 점 사이의 절대각도를 재는 atan2
프로그래밍 언어에서 역탄젠트를 계산하는 함수 atan2의 특징을 알아보자
아크탄젠트란?
아크탄젠트(arctangent)는 역탄젠트라고도 하며 탄젠트의 역함수이다. 아크탄젠트를 이용하면 위 사진에서의 θ의 각도를 구할 수 있다.
모든 프로그래밍 언어에는 아크탄젠트를 계산할 수 있도록 Math 모듈에 atan(y / x)과 atan2(y, x) 함수를 지원한다.
atan과 atan2의 차이점
atan과 atan2은 두 점 사이의 θ의 절대각을 구하는 함수인데 왜 두가지로 나뉘었을까?
atan은 두 점 사이의 탄젠트값을 받아 절대각을 -π/2 ~ π/2의 라디안 값으로 반환한다. (-90 ~ 90도)
atan2는 두 점 사이의 상대좌표(x, y)를 받아 절대각을 -π ~ π의 라디안 값으로 반환한다. (-180 ~ 180도)
atan2을 사용하는 이유
+- 극이 표시되는 데카르트 좌표계에서 사용할 때 유용하다.
atan2 함수는 점 A로부터 점 B가 상대적으로 어느 위치에 있는지를 파라미터로 받는데, 상대적인 위치이기 때문에 파라미터 x나 y가 음수값이 될 수 있다.
하지만 atan 함수를 사용한다면 파라미터가 직선의 기울기이므로 결과값은 방향 개념이 상실된 두 점 사이의 각도가 되어버린다.
예시
아래 예시들은 자바스크립트로 작성하였다.
b가 a보다 {2, 2} 만큼 위치한 경우
const a = {
x : 0,
y : 0
};
const b = {
x : 2,
y : 2
};
const x = b.x - a.x;
const y = b.y - a.y;
const radian = Math.atan2(y, x);
const degree = radian * 180 / Math.PI // 라디안 -> 디그리 변환
console.log(radian);
console.log(degree);
0.7853981633974483
45
b가 a보다 {-2, -2} 만큼 위치한 경우
const a = {
x : 0,
y : 0
};
const b = {
x : -2,
y : -2
};
const x = b.x - a.x;
const y = b.y - a.y;
const radian = Math.atan2(y, x);
const degree = radian * 180 / Math.PI // 라디안 -> 디그리 변환
console.log(radian);
console.log(degree);
-2.356194490192345
-135
반응형