반응형
두 점 사이의 절대각도를 재는 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
반응형
'Programming > 프로그래밍 이론' 카테고리의 다른 글
[프로그래밍 이론] HTTP forward와 redirect (2) | 2023.12.07 |
---|---|
[프로그래밍 이론] In-app browser, External browser (1) | 2020.07.03 |
[프로그래밍 이론] 반각문자 @와 전각문자 @ (1) | 2019.10.10 |
[프로그래밍 이론] JWT (Json Web Token) (0) | 2019.04.19 |
[디자인 패턴] 팩토리 메소드 패턴 (Factory method pattern) (0) | 2019.03.20 |
댓글