역삼각함수
역함수
역함수란 함수의 입력값과 출력값의 위치가 바뀐 함수를 의미 합니다.
예를 들어 입력값의 2배의 출력값을 가지는 함수가 있을때, 이 함수의 역함수는 입력값의 0.5배의 출력값을 가지는 함수 입니다.
\(y = 2x\)
- 입력 1 -> 출력 2
- 입력 2 -> 출력 4
- …
- 입력 2 -> 출력 1
- 입력 4 -> 출력 2
- …
두 함수의 입력과 출력의 방향이 반대인 것을 알 수 있습니다. 따라서 두 함수는 역함수 관계 입니다.
역삼각함수
그렇다면 $sin(\theta) = 높이 / 빗변$ 함수의 역함수는 무엇일까요?
바로 $\theta$ (각도)와 $높이 / 빗변$ (삼각비)의 위치를 바꾸면 sin함수의 역함수가 됩니다.
$arcsin(높이 / 빗변) = \theta$
나머지 코사인과 탄젠트의 역함수도 마찬가지입니다.
$arccos(밑변 / 빗변) = \theta$
$arctan(밑변 / 높이) = \theta$
sin, cos, tan 함수의 입력과 출력값이 바뀐 형태의 함수를 arcsin(아크사인), arccos(아크코사인), arctan(아크탄젠트) 라고 합니다.
응용
그렇다면 게임에서 역삼각함수는 언제 사용될까요? 간단한 예시를 하나 소개하겠습니다.
- 2D 횡스크롤 게임 입니다.
- 미사일과 몬스터가 있습니다.
- 미사일은 자동조준 기능이 있어 적을 항상 바라봅니다.
- 우리가 알 수 있는 정보는 미사일의 위치와 몬스터의 위치정보밖에 없습니다.
이때 미사일의 자동 조준 기능을 구현하려면 어떻게 해야 할까요?
먼저 미사일과 적의 위치로 직각 삼각형을 그리고 밑변과 높이값을 구할 수 있습니다.
- 밑변 = (적위치 - 미사일위치).x
- 높이 = (적위치 - 미사일위치).y
밑변과 높이라고 하면 탄젠트 함수가 떠오릅니다. 하지만 탄젠트 합수는 입력값으로 각도를 넣는 함수입니다. 바로 여기서 아크 탄젠트 함수를 사용할 수 있습니다.
\[arctan(밑변 / 높이) = \theta\]위에서 밑변과 높이를 구했으니 바로 각도를 구할 수 있게 되었습니다. 주의할 점은 일반적으로 삼각함수의 각도값은 라디안 단위를 사용합니다. 따라서 디그리 각도가 필요한 경우 변환을 해서 사용해야 합니다.