본문 바로가기
스터디

[게임수학] 4장. 삼각함수 : 회전을 위한 수학

by se.jeon 2023. 3. 29.
728x90
반응형

'이득우의 게임수학' 책을 읽는 스터디의 정리 및 기록용으로 작성되었습니다.

 

평면에서 시각적으로 의미 있는 물체를 생성하기 위해서는 원소를 정의해야 하고, 이를 벡터라고 한다.

 

4.1 삼각함수

회전은 원의 궤적을 따라 이동하는 움직임이기 때문에, 이를 이해하기 위해 원과 밀접하게 연결되어 있는 삼각함수를 알아야 한다.

삼각비

직각삼각형을 구성하는 세 변에서 두 변을 뽑아 각각의 비례관계를 나타낸 것.

  • 사인(Sine)
  • 코사인(Cosine)
  • 탄젠트(Tangent)

삼각함수

직각삼각형을 데카르트 좌표계 상에 배치하고 사잇각의 범위를 실수 전체로 확장한 대응 관계.

반지름이 1일 때

  • sinθ = b
  • cosθ = a
  • tanθ = b/a
  • cos²θ + sin²θ = 1

4.1.1 삼각함수의 성질

반지름이 1인 단위 원에서 반시계 방향의 회전을 생각 해 본다.

  • 각도 : x축에서 원의 궤적을 따라 반시계 방향으로 회전한 크기를 의미한다.
  • 진폭 : 360도마다 반복되는 변화 값의 범위
  • 주기 : 360도마다 반복되는 각도

sin함수와 cos함수의 성질

  1. sin 함수와 cos 함수는 항상 -1에서 1 사이를 일정하게 반복하는 패턴을 띈다.
  2. sin 함수와 cos 함수의 값은 360도 주기로 반복된다.
  3. y축을 기준으로 좌우를 접어 포갰을 때 cos 함수 그래프는 데칼코마니처럼 좌우 대칭인 반면, sin 함수 그래프는 상하가 반전된 원점 대칭의 형태를 띤다.
  4. cos 함수와 같이 좌우 대칭의 성질을 가진 함수를 짝함수(Even Function) 또는 우함수라고 부른다.
  5. sin 함수와 같이 원점 대칭의 성질을 가진 함수를 홀함수(Odd Function) 또는 기함수라고 부른다.
  6. cos(-θ) = cos(θ)
  7. sin(-θ) = -sin(θ)
  8. tanθ = b/a
  9. cos 함수 값이 0이 되는 90도, 270도, -90도, -270도인 경우에는 tan값이 존재하지 않는다. → tan 함수의 정의역에는 해당 구간이 포함되지 않는다.

4.1.2 각(Angle)의 측정법

  • 각도법(Degree) : 0에서 360까지의 수를 사용.
  • 호도법(Radian) : 길이가 1이 되는 부채꼴의 각을 기준으로 각을 측정.

180도에 해당하는 반원의 호 길이는 파이(ㅠ)이다.

호의 길이가 1인 부채꼴의 중심각은 1rad(라디안)이며, 무리수 52.2958… 이다.

1도 = ㅠ/180(rad) → 1(rad) = (180/ㅠ)도

4.2 삼각함수를 활용한 물체의 회전

회전을 구현하기 위해 기저벡터의 개념을 활용한다.

기저벡터의 개념을 활용하여 실벡터 공간 전체를 각 θ만큼 회전시킨다.

임의의 벡터 (x, y)가 각 θ만큼 회전된 결과 (x’, y’)는 다음과 같다.

  • x’ = x cos θ - y sin θ
  • y’ = x sin θ + y cos θ

4.3 삼각함수의 역함수

게임 제작 과정에서는 거꾸로 주어진 벡터의 좌표로부터 이에 대응하는 각도를 얻어내는 작업도 필요하다. 이를 계산하기 위해 삼각함수의 역함수와 이에 대한 성질을 알아야 한다.

arcsin(아크사인) : sin함수의 역함수

  1. sin함수는 정의역의 여러 요소가 공역의 한 요소에 대응된다.
  2. 공역의 범위를 실수 집합 전체가 아닌 [-1, 1] 구간으로 한정해 정의한다면 sin 함수는 전사함수의 성질을 띤다.
  3. 정의역의 범위를 [-90, 90]으로 좁혀 정의역의 한 요소가 공역의 한 요소에 대응되도록 전단사함수를 만든다.
  4. 전단사함수가 되었기 때문에 sin x값이 주어졌을 때 거꾸로 각 x를 구할 수 있는 역함수가 존재하게 된다.

arccos(아크코사인) : cos함수의 역함수

  1. cos함수는 정의역의 여러 요소가 공역의 한 요소에 대응된다.
  2. 공역의 범위를 실수 집합 전체가 아닌 [-1, 1] 구간으로 한정해 정의한다면 cos 함수는 전사함수의 성질을 띤다.
  3. 정의역의 범위를 [0, 180]으로 좁혀 정의역의 한 요소가 공역의 한 요소에 대응되도록 전단사함수를 만든다.
  4. 전단사함수가 되었기 때문에 cos x값이 주어졌을 때 거꾸로 각 x를 구할 수 있는 역함수가 존재하게 된다.

arctan(아크탄젠트) : tan함수의 역함수

  1. tan함수의 치역은 실수 영역 전체이며, 정의역이 존재하지 않는 구간이 존재한다.
  2. tan함수의 정의역 구간을 제한해서 한정한다.
  3. tan함수는 x값이 -90도와 90도일 때의 y값이 존재하지 않으므로 전단사함수가 되기 위한 정의역 구간이 [-90, 90]이 된다.
  4. 전단사함수가 되었기 때문에 tan x값이 주어졌을 때 거꾸로 각 x를 구할 수 있는 역함수가 존재하게 된다.

arctan 함수는 벡터의 각도를 구하는 데 유용하게 사용된다. 분수식 y/x를 계산해 벡터로부터 tan 함수 값을 얻을 수 있다. tan 값을 arctan 함수에 넣으면 해당 벡터가 x축과 이루는 사잇각을 얻어낼 수 있다.

atan2(아크탄젠트2)

arctan 함수의 치역은 (-90, 90) 구간이며 arcsin, arccos도 동일한 상황이다.

arctan 함수의 경우, 인자에 분수 y/x값을 넣지 않고 x와 y의 두 값을 분리해 전달하면 4사분면 전체에 해당하는 각의 정보를 얻을 수 있지만 분수값 y/x는 양수기 때문에, 이를 arctan함수에 전달하면 3사분면의 정보는 사라지고 1사분면의 해당하는 각의 정보가 나와 처음에 사용한 벡터를 얻어낼 수 없다.

하지만 arctan 함수에 x와 y 두 값을 따로 전달한다면 두 값이 가지는 부호를 파악해 벡터가 1사분면에 있었는지 3사분면에 있었는지를 파악할 수 있다. 그래서 arctan 함수에는 분수값 y/x를 계산해 전달하는 함수와 x와 y를 따로 전달하는 함수의 두 종류가 있다.

x와 y를 따로 전달하는 arctan 함수를 atan2 함수라고 부르며, 이는 분수 y/x를 연상하기 쉽게 y값에 이어 x값을 전달하도록 설계되어 있다. atan2를 사용하면 평면의 모든 사분면에 대응하는 각도를 얻을 수 있다.

4.4 극좌표계

데카르트 좌표계로 회전을 구현하면 회전에 따른 x와 y의 변화를 매번 계산하는 번거로움이 발생한다. 회전 동작을 기반으로 설계된 좌표계인 ‘극좌표계’를 사용하면 편리하게 회전을 관리하고 구현할 수 있다.

극좌표계는 원점으로부터 거리 r과 각 θ의 두 요소로 구성되며 극좌표계의 좌표는 (r, θ)로 표시한다. 동심원의 형태로 평면의 모든 점을 표현하며, 주로 시간에 따른 회전의 움직임을 구현하거나 회전에 관련된 효과를 연출할 때 활용된다.

4.5 정리

삼각함수는 회전과 밀접하게 연결되어 있다. 삼각함수의 변화를 생각하면서 공식을 유도하고 각에 따라 변화하는 sin 함수와 cos 함수의 성질을 이해해야 한다. atan2함수가 왜 인자를 두 개 받을 수 밖에 없는지에 대한 이해가 필요하다.

728x90
반응형