게임을 개발하다보면 두 점의 각도를 구해야 할 때가 있다.
시야 시스템을 만든다고 가정하자.
내 캐릭터는 정면을 기준으로 특정 각도에 있는 적 캐릭터만 인지할 수 있으며 이외의 각도에서는 적 캐릭터를 볼 수 없는 시스템을 구현할 때 두 점(내 캐릭터 위치, 적 캐릭터 위치)의 각도를 계산할 필요가 있다.
그렇다면 두 점의 각도는 어떻게 구할 수 있을까?
function direction(x1: number, y1: number, x2: number, y2: number) {
return (180 / Math.PI) * (Math.atan2(x1 - x2, y1 - y2);
}
두 점의 각도는 삼각함수 중 하나인 탄젠트의 역수, 아크탄젠트를 통해 구할 수 있다.
삼각함수란?
삼각함수는 주로 삼각비를 계산하는데 사용된다. 주요 3가지 사인 함수, 코사인 함수, 탄젠트 함수가 있다.
삼각비란?
삼각형의 각도와 변의 길이 간 비율을 의미하며 주요 3가지 사인, 코사인, 탄젠트가 있다.
1. 사인은 삼각형의 한 각의 맞은편 변의 길이를 대각선인 빗변의 길이로 나눈 비율이다.
2. 코사인은 삼각형의 한 각의 인접 변의 길이를 대각선인 빗변의 길이로 나눈 비율이다.
3. 탄젠트는 사인을 코사인으로 나눈 비율로, 삼각형의 한 각의 맞은편 변의 길이를 인접 변의 길이로 나눈 값이다.
탄젠트란?
탄젠트는 삼각함수 중 하나이며 각도에 대한 비율을 나타낸다. 직각 삼각형에서 한 각의 탄젠트 값을 계산할 때, 그 각의 맞은편 변의 길이를 인접 변의 길이로 나눈 비율이다.
아크탄젠트란?
아크탄젠트는 탄젠트의 역함수로 주어진 비율로부터 각도를 계산한다.
역함수란?
함수의 입력과 출력이 뒤바뀐 함수를 의미한다. 탄젠트가 주어진 각도에 대한 비율을 나타낸다면 아크탄젠트는 주어진 비율로부터 각도를 계산한다.
프로그래밍 언어에서는 아크탄젠트 함수중 atan과 atan2 두 가지 함수가 존재하며 이 둘의 차이점은 다음과 같다.
1. atan은 하나의 좌표에 대한 값만 계산하며 반환 값은 -π/2에서 π/2 사이의 범위를 갖는다.
2. atan2는 두 개의 좌표에 대한 값을 계산하며 반환 값은 -π에서 π 사이의 범위를 갖는다.
이중 atan2은 음수 범위를 허용하고 두 점의 좌표 X와 Y를 통해 계산됨으로 주로 사용된다.
'즐거운 게임 수학' 카테고리의 다른 글
특정 좌표가 원 안에 있을 때 감지하기 (0) | 2023.06.05 |
---|---|
선형 보간법(linear interpolation) (0) | 2023.06.05 |
특정 각도에서 일정 거리의 좌표 구하기 (0) | 2023.06.05 |
각도의 단위, 라디안(radian)과 디그리(degree) (0) | 2023.06.05 |
두 점의 거리 계산하기 (0) | 2023.06.03 |