[GameMath] 삼각함수
들어가며
게임 개발에서 사용되는 수학은 생각보다 어렵지 않다. 대부분 삼각함수, 벡터, 행렬의 개념만 잘 익혀두면 충분하다. 이번에는 삼각함수에 대한 개념과 게임에서의 활용에 대해 알아보자.
삼각함수
삼각함수에 대해 알아보자.
피타고라스의 정리
직각 삼각형 ABC에서
- 빗변 (hypo-tenuse): ℎ
- 밑변 (adjacent): 𝑎
- 높이 (opposite): 𝑜
- 각도: 𝜃
- 게임에서의 활용
- 예: 플레이어와 몬스터 간의 거리 계산
float dx = monster.x - player.x; float dy = monster.y - player.y; float distance = sqrt(dx * dx + dy * dy); // 피타고라스 정리
- 예: 플레이어와 몬스터 간의 거리 계산
삼각함수
- 삼각함수의 기본 정의
단위원
- 정의
- 원점을 중심으로 하고 반지름이 1인 원
- 원 위의 각도 θ에 해당하는 점의 좌표
라디안
게임에서는 도(degree)가 아닌 라디안(radian)을 사용한다.
- 라디안
- 호의 길이가 반지름과 같게 되는 만큼의 각을 1 라디안이라고 정의한다.
삼각함수 그래프
역삼각함수
삼각함수의 값을 알고 있을 때 각도를 구하고 싶다면 역삼각함수를 사용한다. (단 역함수는 결과의 범위가 정해져 있음) arc(아크)를 붙여 사용한다.
자주 사용하는 공식
게임 좌표 연산에서 자주 활용되는 개념에 대해 알아보자.
- 코사인 법칙
- 코사인 덧셈 정리
- 회전 행렬에서 자주 사용된다.
- 회전 행렬에서 자주 사용된다.
- 공식 활용 예시
- 거리 계산
float distance = sqrt(dx * dx + dy * dy);
- 두 벡터의 사이각 구하기
float dot = Normalize(a).Dot(Normalize(b)); float angle = acos(dot);
- 거리 계산
마치며
오랜만에 삼각함수 개념을 공부했다. 바로 기억이 안나는 부분이 있어서 주기적으로 복습해야겠다!
Leave a comment