[게임수학의 이해 이득우 교수님 강의 정리] 5. 회전의 수학Ⅰ : 삼각함수

Park Sejin·2021년 6월 5일
0
post-thumbnail

회전 변환의 중요성

  • 앞에서 다룬 트랜스폼은 크기, 회전, 이동을 순서대로 진행하는 합성 변환임.
  • 이 중에서 회전은 별도의 주제로 분리하여 설명해야할 정도로 독특한 변환.

회전의 메커니즘

image

  • 현실 세계에서 회전을 할 경우, 중심축을 설정하고 물체를 돌리면 됨.
  • 하지만 가상 세계에서는 물체가 움직이는 것이 아니고 물체를 담는 공간이 움직임.
  • 그렇다면 무한대로 뻗어있는 벡터공간을 어떻게 회전해야 할까?
  • 표준 기저 벡터의 선형조합으로 벡터 공간의 모든 벡터를 표현 가능함.
  • 표준 기저 벡터를 변경하면 벡터 공간에 속한 모든 원소들이 표준 기저 벡터가 변화된 모습에 따라서 모두 재배치가 됨.
  • 이것이 공간 변환의 원리임. 이 원리를 바탕으로 회전 변환을 구현.

image

회전 변환의 원리

image

  • 두 표준 기저 벡터가 변했을 때 이 두 표준 기저 벡터가 가지고 있었던 성질을 그대로 똑같이 유지해주면 회전 변환이 될 수 있음.
  • 2차원 공간에서 두 표준 기저 벡터가 가지는 성질은 크기가 1이고 서로 직교 함.
  • 이 성질을 계속 유지 시켜주면 회전 변환을 만들 수 있음.

image

image

  • 2차원 평면에서 크기가 1인 벡터를 나열하면 위 그림처럼 반지름이 1인 동그란 원이 만들어짐. 이런 원을 단위원이라고 함.
  • 단위원 상에 위치한 두 벡터를 임의로 뽑는다면 표준 기저 벡터가 가지는 성질의 첫 번째 조건인 크기가 1인 2개의 백터를 가져올 수 있게 됨.

image

  • 그리고 이러한 두 개의 벡터 중에서 서로 직교하는 벡터 쌍을 찾는다면 표준 기저 벡터가 가지고 있는 성질을 그대로 유지하는 두 개의 새로운 벡터라고 할 수 있음.
  • 이것이 2차원 회전 변환의 원리이고 3차원, 4차원도 마찬가지 임.

삼각함수(Trigonometric function)

  • 서로 직교하는 벡터의 단위원 상의 점은 삼각함수를 사용하여 구할 수 있음.

image

  • 원호 위의 한 점을 표현할 때 직교 좌표계 상에서 x, y라는 값을 사용해서 표현할 수 있음.

image

  • 하지만 회전의 관점에서는 기준 위치에서 얼마만큼의 각으로 회전했는지를 회전한 각과 반지름을 사용해서 표현할 수 있음.
  • 위 그림에서 수선을 내리면 직각삼각형을 만들 수 있음.

image

  • 직각삼각형의 빗변, 밑변, 높이를 조합해서 만든 비를 삼각비라고 함.
  • 대표적인 삼각비로 높이/빗변, 밑변/빗변, 높이/밑변가 있고 여기서 파생된 것이 삼각함수임.

image

  • 삼각함수에서는 위의 삼각비를 순서대로 사인함수, 코사인함수, 탄젠트함수라고 함.

image

  • 단위원에서는 sin(θ)는 높이, cos(θ)는 밑변이므로 단위원 위의 점을 삼각함수로 표현할 수 있음.
  • 직교하는 두 개의 표준 기저 벡터에 임의의 각 θ가 주어졌을 때 좌표가 어떻게 변화 되는지를 삼각함수를 사용하여 구할 수 있음.

image

  • 첫 번째 기저 벡터 (1, 0)은 (cosθ, sinθ)로 변환됨.

image

image

  • 위 그림에서 두 삼각형은 합동이기 때문에 두 번째 기저 벡터 (0, 1)은 (-sinθ, cosθ)로 변환됨.
  • 회전된 평면 공간이란 두 기저 벡터 (1, 0)과 (0, 1)을 두 벡터 (cosθ, sinθ)과 (-sinθ, cosθ)로 재구성한 공간임.

image

  • 벡터 공간의 임의의 점 (x, y)를 각 θ만큼 회전시켰다고 하면 위의 그림처럼 계산할 수 있음.
  • 결과가 복잡하기 때문에 변환을 쉽게 계산하기 위해 행렬을 사용함.

2차원 회전 행렬

image

  • 2차원 평면의 회전 행렬은 두 기저벡터가 변화된 값을 열로 하나씩 꽂아준 모양을 가짐.

3차원 공간의 회전

  • 3차원 공간에서 임의의 2차원 평면을 설정하고 회전을 해야하기 때문에 3차원 공간의 회전은 2차원 보다 까다로움.
  • 게임에서는 크게 두 가지 방식을 사용함.

image

  • 축-각 회전은 3차원 공간에서 임의의 회전축을 설정하고 회전할 점이 속해있는 평면을 만들어 그 평면을 따라서 회전시켜주는 방법.

image

  • 오일러 각 회전은 x, y, z 표준 기저 벡터를 중심축으로 설정하고 지정된 순서에 따라 세 축을 회전시키는 방법.
  • 오일러 각 회전은 하나의 회전을 일부러 세 번의 회전으로 나누어 진행하는 방식.

image

  • 축-각 회전 방식의 대표적인 방법으로는 로드리게스 회전공식이 있음.
  • 로드리게스 회전공식은 내적과 외적을 사용함.

image

  • 오일러 각 방식의 기본 회전축은 이미 알고 있는 표준 기저 벡터를 사용하기 때문에 회전축에 대한 정보는 생략.
  • 얼마만큼 회전했는지 각에 대한 정보만 저장하는 방식.
  • 직관적이기 때문에 대부분의 3차원 그래픽 툴에서 사용하며 적은 양의 데이터로 3차원 회전을 표현할 수 있음.

축-각 회전과 오일러각 회전의 문제

image

  • 로드리게스 회전은 행렬로 만들기가 어려움.

image

  • 한 번의 회전을 세 번으로 나누어 표현하기 때문에 임의의 축에 대해 부드럽게 회전하는 움직임을 표현할 때 어려움.
  • 한 축의 회전이 증발하는 짐벌락 현상이 발생할 수 있음.

3차원 회전을 안정적으로 구현하는 방법

  • 다차원의 수체계를 사용하는 사원수(Quaternion)으로 해결

출처

게임 수학의 이해 강의 - 이득우 교수님

유튜브 링크

0개의 댓글