회전 계산
Last updated
Last updated
회전이란 크기가 1인 수와의 곱이다.
공간의 변환이란 원 공간을 떠받들고 있었던 표준기저벡터를 변경시켜 새로운 공간을 창조하는 작업
벡터 공간에 속한 모든 원소들이 표준기저벡터가 변화된 모습에 따라 모두 재배치된다. 이것이 공간변환의 원리
회전 변환을 적용해 변환된 물체는 외형이 변하지 않는다.
표준기저벡터가 가지고 있던 성질을 그대로 유지시키면 회전변환을 만들 수 있다.
각 표준기저벡터가 가지고 있는 크기는 1이다.
두 표준기저벡터는 직교하고 있다. (1, 0), (0, 1) -> 두 지점이 직각을 이뤄야함
첫 번째 기저벡터 (1, 0) → (cos(θ), sin(θ))
로 변환이 된다.
첫 번째와 직교하는 두번쩨 기저벡터가 각 세타만큼 회전한 값은 (-sin(θ), cos(θ))
가 된다.
두 삼각형이 합동이기 때문이다.
따라서 회전된 평면 공간이란 두 표준기저벡터 (1, 0), (0, 1) → (cos(θ), sin(θ)), (-sin(θ), cos(θ))로 재구성한 공간이 된다.
두 삼각형이 합동이라는 것은 두 삼각형이 모든 변의 길이, 대응하는 각도의 크기, 대응하는 변과 각도의 순서가 모두 일치할 때, 그 두 삼각형은 합동이라고 한다.
삼각함수의 복잡한 회전 변환 계산을 좀 더 쉽게 하기 위해 고안한 방법
하나의 열에 삼각함수로 기저벡터가 변화된 값을 넣어 표현한다.
임의의 2차원 평면을 설정하고 그것을 회전시키는 방식
3차원 공간에서 임의의 회전축을 설정, 돌릴 점이 속해있는 평면을 만든 후 평면에 따라서 회전을 시켜준다.
대표적인 방법으로 로드리게스 회전 공식이 있다.
내적과 외적을 사용해서 계산하는 방식
행렬로 변환하기 어려워 전체 렌더링을 구성하는 렌더링 파이프라인의 흐름이 끊기게 된다.
효율이 떨어져 잘 사용하지않음
(x, y, z) 세개의 표준기저벡터를 중심축으로 잡고 지정된 순서에 따라 하나씩 돌려주는 방식
하나의 회전을 3개로 쪼개서 회전하는 방식
기본 회전축은 인지하고 있는 표준기저벡터를 사용하므로 회전축에 대한 정보는 생략하고 얼만큼 돌아갔는지 각의 대한 정보만 저장하는 방식
직관적이고 데이터가 적게 사용되기 때문에 대부분의 소프트웨어에서 물체의 회전을 표현할 때 사용함
3번씩 끊어서 계산하기 때문에 임의의 축에 대해 부드럽게 움직이는 회전을 계산하기 어렵다.
한축의 회전이 증발해버리는 짐벌락 현상이 발생하기도 한다.
3차원 회전을 안정적으로 구현하기 위해 다차원적인 수 체계를 이용해 해결한다.
사원수란 네 개의 원소로 이루어진 수
수 에는 연산이 존재하여 단순 집합과는 차이가 있다. (집합은 원소의 묶음을 의미)
사원수는 하나의 실수와 세 개의 허수로 구성됨
a + bi + cj + dk
, 하나의 실수 a와 세 개의 허수 i, j, k
3가지 허수를 3차원 x, y, z에 대응을 시키고 나머지 한 차원을 0으로 대입
크기가 1인 사원수와의 곱은 4차원 공간에서의 회전을 의미한다.
사원수를 사용해 빠르게 벡터를 회전시킬 수 있다.
사원수 체계를 이해하기 까다롭고 직관적이지 않아 사용하기 어렵다.
사원수는 행렬로 변환이 용이하다.
회전과 관련된 모든 계산은 내부적으로 사원수 체계에서 진행된다.
하지만 유저인터페이스 단에서는 지정된 각을 다루기 편하도록 오일러 방식으로 변환해서 보여준다.