세 개의 주축 중심 회전을 결합한 것.
주축은 world space에서 택할 수도 있고, object space에서 택할 수도 있다.
물체가 움직이면 그 space도 같이 움직인다.
물체의 방향은 회전이 결정한다.
물체의 방향을 정의하는데 있어 오일러 각(Euler angle)은 매우 직관적인 수단이다.
오일러 변환은 각도 3개로 표현된다.
세 축 중심의 회전각 을 오일러 각(Euler angles)라고 부른다.
어떤 축을 먼저 회전하는 순서에 따라 결과가 달라진다.
animator는 rendering될 모든 frame에서의 동작을 정의하진 않는다.
key frame 사이의 in-between frame은 key frame의 key data들 간의 interpolation으로 생성한다.
key data의 예로는 물체의 위치, 방향, scaling factor 등을 들 수 있다.
가장 오른쪽의 orientation이 x,y,z축 중심의 회전 각도를 보여주는데, 이것이 오일러 각(euler angle)이다.
부드러운 animation은 고차원(high-order) interpolation을 통해 얻어진다.
quaternion 는 복소수를 확장한 것으로, 다음과 같이 네 개의 항으로 표현된다.
허수부(imaginary part):
실수부(real part):
허수 단위(imaginary unit):
허수부는 종종 로 줄여쓴다. 그래서 quaternion은 로 표현하기도 한다.
허수 단위는 다음과 같은 특징을 지닌다.
또한, 두 개의 서로 다른 허수단위가 곱해지면, 다음과 같은 순환치환(cyclic permutation)적인 특징을 가진다.
일반 복소수처럼 qutennion도 켤레를 가진다.
q의 켤레 quternion은 다음과 같다.
2차원에서 좌표를 가진 벡터를 반시계방향으로 만큼 회전하는 것은 다음과 같이 행렬-벡터 곱셈으로 표현되었다.
이제 를 실수부로, 를 허수부로 가지는 복소수 를 라 표기하자.
한편, 회전각 가 주여졌을 때, 이를 크기가 1인 극형식(polar form)의 복소수로 표현하면,
= 가 된다.
위의 복소수를 이용해 2차원 회전을 표현하면, 다음과 같다.
3차원 벡터 를 중심으로 만큼 회전시키는 경우,
회전할 벡터와 회전 변환 각각을 quaternion으로 표현하면, 다음과 같다.
(허수부 , 실수부 0)
또한, 회전축 와 회전각 로 또 다른 quaternion 를 다음과 같이 정의한다.
이때 회전을 표현하는 quaternion의 크기는 1이 되어야 하므로, 를 단위벡터로 만든다.
그러면 크기가 1인 극형식(polar form)의 quaternion은 다음과 같다.
를 중심으로 만큼 회전하는 것은 다음과 같이 표현된다.
(은 허수부로, 가 회전된 벡터이다.)
회전된 벡터 을 또 다른 quaternion 을 사용해 회전시키는 경우를 생각해 보자.
이는 가 두 회전이 결합된 quaternion임을 보여준다.
이다. 즉, 동일한 회전을 표현한다.
quaternion 는 ' 중심 만큼 회전', 즉, 이고,
quaternion 는 ' 중심 만큼 회전' 이라고 할 때,
이는 의 모든 원소의 부호를 바꾼 것이므로 로 쓸 수 있다.
따라서 이므로, 와 는 동일한 회전을 표현한다.
두 quaternion 와 을 생각해보자. 이들은 [0,1] 범위에서 정규화된 parameter 를 사용해 보간된다.
다음은 구체 선형 보간 식이다. (spherical linear interpolation)
여기에서 와 사이의 각도인 는 다음과 같이 계산된다.