포스트

삼각 함수

삼각 함수를 이용해 평면 상의 물체의 회전을 표현할 수 있습니다.

삼각 함수

‘이득우의 게임 수학’을 읽고 내 나름대로의 이해를 토대로 정리한 글이다. 틀린 부분이 있을 수도 있다.

벡터의 덧셈과 곱셈만으로는 점의 직선적인 움직임밖에 표현할 수 없다.
회전은 원과 관련이 있기 때문에 삼각 함수를 이해해야 한다.



삼각비

삼각형은 내각의 합이 총 $180^\circ$다. 여기서 직각 삼각형을 생각해보자.

직각 삼각형은 한 각이 $90^\circ$이기 때문에 나머지 두 각의 합도 $90^\circ$다.
이때 빗변과 밑변의 사잇각을 $\theta$라고 설정하면서 삼각비에 대한 내용이 시작된다.

삼각비란 $\theta$에 대하여 세 변 중 두 변을 선택해 비례 관계를 나타낸 것을 말한다.

$sin\theta = \cfrac{b}{c}$
$cos\theta = \cfrac{a}{c}$
$tan\theta = \cfrac{b}{a}$



삼각 함수

직각 삼각형에서는 $\theta$의 범위가 $(0^\circ, \; 90^\circ)$로 고정된다.
데카르트 좌표계에 직각 삼각형을 두고 $\theta$의 범위를 $\mathbb{R}$ 전체로 확장한 대응 관계를 삼각 함수라고 한다.


데카르트 좌표계에 원점을 중심으로 하는 단위 원을 그리고 원 위에 아무 점이나 찍어보자.
그리고 그 점에서 $x$축으로 선을 내리면 직각 삼각형이 생긴다.

원의 반지름은 1이기 때문에 아무렇게나 찍은 점의 좌표는 $(cos\theta, sin\theta)$임을 알 수 있다.
그리고 피타고라스의 정리에 의해서 다음의 식이 성립한다.

$cos\theta^2 + sin\theta^2 = 1$


단위 원을 조금 더 확장해서 반지름이 $r$인 원 $C$을 생각해보자.
그렇다면 $C$의 원주 위의 점의 좌표는 $(rcos\theta, \; rsin\theta)$가 된다.
그리고 피타고라스 정리에 의해 다음의 식이 성립한다.

$r^2 \cdot cos\theta^2 + r^2 \cdot sin\theta^2 \ = r^2(cos\theta^2 + sin\theta^2) \ = r^2$



삼각 함수의 성질

데카르트 좌표계에서 각도는 원의 궤적을 따라 반시계 방향으로 회전한 크기를 나타낸다.

각도는 아무리 커진다고 하더라도 $360^{\circ}$를 초과할 수 없다.
따라서 $[0^{\circ}, \; 360^{\circ}]$의 닫힌 구간에서 반복하기 때문에 주기가 생긴다.

이때 $sin$과 $cos$의 주기를 살펴보면 다음과 같다.

$sin$은 $0^{\circ}$를 기준으로 원점 대칭이므로 기함수다.
$cos$은 $0^{\circ}$를 기준으로 좌우 대칭이므로 우함수다.


$tan$는 빗변과는 무관하며 밑변과 높이의 비례 관계만을 나타낸다.

$tan\theta = \cfrac{sin\theta}{cos\theta}$

분모는 0이 될 수 없기 때문에 $cos\theta$가 0이 되는 $90^{\circ}$에서는 $tan$ 값이 존재하지 않는다.
$tan$ 역시 주기를 가지기 때문에 $cos\theta$가 0이 되는 지점의 $tan$ 값은 모두 존재하지 않는다.



호도법

일상에서 각도를 측정할 때는 각도법을 사용한다. 각도법은 $0^{\circ}$부터 $360^{\circ}$까지의 수를 사용한다.
쉽게 알아볼 수 있으니 편리하긴 하지만 단위로 사용하기엔 360은 너무나도 크다.

벡터를 단위 벡터로 만들 듯이 각도도 1을 기준으로 하는 단위가 있으면 보편적이다.
따라서 호의 길이를 기준으로 각을 측정하는 방법을 사용하며 이를 호도법이라고 한다.

호도법과 각도법 사이에는 변환 관계가 존재한다.

$\pi(rad) = 180^{\circ}$

이 수식을 활용해 다음의 변환식을 만들 수 있다.

$1^{\circ} = \cfrac{\pi}{180}(rad)$
$1(rad) = (\cfrac{180}{\pi})^{\circ}$



물체의 회전

물체를 이동시키거나 크기를 조절하는 동작은 곱집합을 구성하는 축이 독립적으로 적용된다.
$x$축과 $y$축을 분리하여 적용하고 더한 것과 동시에 적용한 것이 동일하다.

하지만 회전은 $x$축과 $y$축이 동시에 영향을 받기 때문에 독립적으로 적용할 수 없다.
회전을 구하기 위해서는 기저 벡터를 활용해야 한다.


다음과 같이 표준 기저 벡터 $e_1$과 $e_2$를 이용하여 생성된 벡터 공간 $\mathbb R$을 보자.

이때 $e_1$이 $\theta$만큼 회전했을 때의 좌표는 다음과 같이 변한다.

$(1, 0) \quad \rightarrow \quad (cos\theta, sin\theta)$

그리고 $e_2$가 $\theta$만큼 회전했을 때의 좌표는 다음과 같이 변한다.

$(0, 1) \quad \rightarrow \quad (-sin\theta, cos\theta)$

회전하고나서 두 기저 벡터의 선형 결합은 다음과 같이 변한다.

$1 \, \cdot \, (cos\theta, sin\theta) + 1 \, \cdot \,(-sin\theta, cos\theta)$
$ = (cos\theta - sin\theta, \; sin\theta + cos\theta)$

이와 동일한 원리로 임의의 벡터 $\vec{v} = (a, \;b)$가 $\theta$만큼 회전한 결과는 다음과 같이 얻는다.

$a \, \cdot \, (cos\theta, sin\theta) + b \, \cdot \,(-sin\theta, cos\theta)$
$= (a \cdot cos\theta - b \cdot sin\theta, a \cdot sin\theta + b \cdot cos\theta)$



삼각 함수의 역함수

물체를 회전시키면서 삼각 함수를 이용하여 주어진 각에 대응하는 벡터를 얻는 방법을 알았다.
게임에서는 벡터에 대응하는 각도를 얻어내야 하는 상황도 존재한다.
이를 위해서는 삼각 함수의 역함수를 알아야한다.


$sin$이 가진 $x$와 $y$의 대응 관계를 보면 정의역의 여러 요소가 공역의 한 요소에 대응한다.

이때 공역의 범위를 실수 전체가 아닌 닫힌 구간 $[-1, \, 1]$으로 제한을 두면 $sin$은 전사 함수의 성격을 띤다.
여기서 전단사 함수를 만들기 위해 정의역을 $[-90^{\circ},\, 90^{\circ} ]$로 제한한다.

이렇게 되면 제한된 $sin$의 역함수를 구할 수 있는데, 이를 $arcsin$이라고 한다.

$f^{-1}(x) = sin^{-1}{x} = arcsin{(x)}$


$cos$의 역함수를 구하기 위해 $cos$이 전단사 함수가 되도록 정의역과 공역을 제한해야 한다.
$cos$의 정의역은 $[0^{\circ} ,\, 180^{\circ}]$이고, 공역은 $[-1, \; 1]$이다.

이렇게 제한된 $cos$에서 생성한 역함수를 $arccos$이라고 한다.

$f^{-1}(x) = cos^{-1}(x) = arccos{(x)}$


$tan$의 역함수를 구하기 위해 $tan$이 전단사 함수가 되도록 정의역과 공역을 제한해야 한다.
하지만 $tan$의 치역은 $\mathbb R$인데 반해, 정의역은 존재하지 않는 구간이 있다.

따라서 $tan$가 전단사 함수가 되기 위한 정의역 구간은 $(-90^{\circ}, \, 90^{\circ})$이다.
이렇게 제한된 $tan$에서 생성한 역함수를 $arctan$라고 한다.


$arctan$는 벡터의 각도를 구하는 데 유용하게 사용된다.
벡터 $\vec{v} = (x, \, y)$에서 $\cfrac{y}{x}$를 계산해 벡터로부터 $tan$ 값을 얻어낼 수 있다.
그리고 이 $tan$ 값을 $arctan$에 넣으면 $x$축과 $\vec{v}$ 사이의 각을 얻어낼 수 있다.

그런데 $arcsin$, $arccos$, $arctan$ 모두 구간이 제한되어 있어서 얻을 수 있는 각의 범위가 한정되는 문제가 있다.

이를 해결하기 위해 $arctan$에 $\cfrac{y}{x}$를 전달하는 것이 아닌 $x$와 $y$를 분리해 전달하면 모든 각의 정보를 얻을 수 있다.
분리하여 전달하면 두 값 각각의 부호를 파악하여 벡터가 어느 사분면에 위치하였는지를 파악할 수 있다.

이렇게 $x$와 $y$를 따로 전달하는 $arctan$를 $atan2$라고 한다.
$atan2$는 사용하기 쉽도록 $y$와 $x$의 순서로 두 값을 인자로 받는다.

$atan2(y, \; x)$



마무리

사실 다른 부분들은 기본적으로 조금씩은 알고 있는 내용일 것이라고 생각한다.

중요한 부분은 물체의 회전과 마지막의 $atan2$ 부분이라고 생각한다.
결국 삼각 함수를 필요로 한 이유는 회전이니 말이다.

물론 3차원의 회전 전부를 삼각 함수만으로 다룰 수는 없다.
나중에 3차원의 회전을 다루는 수학에 대해 정리하도록 하겠다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.