반응형

** [강좌] ** [강좌] Quaternion **Quaternion **

copyrightⓒ 김성완(kaswan) [1999년 11월 11일]

3. 단위 쿼터니온과 임의축 회전의 대응

전에 우리는 임의의 벡터 'r' 을 Angular displacement 시킨 결과가 Rr = (cosΘ)r+(1-cosΘ)n(n.r)
+(sinΘ)n×r 이 된다는 것을 알았다. 
더 전에 임의의 복소수에 단위 복소수를 곱한게 결국 임의의 복소수를 복소 평면상에서 회전시키는 것이랑 같다는 것도 알았다.

그렇다면 임의의 쿼터니온에 단위 쿼터니온을 곱한 것은 3차원 공간에서의 회전에 대응될 것인가...? 
답은 거의 그렇다이다.(곱하는 방법이 조금 특이함)

쿼터니온 q = w + xi + yj + zk 가 있을때, 
w는 스칼라 성분으로 나머지는 벡터 성분으로 볼 수 있다.
즉, q = (s, V) 라고 간단히 적을 수 있다. 
이때 물론 s = w 이고 V = xi + yj + zk 이다.

복소수에 공액 복소수가 있듯이 쿼터니온에도 공액 쿼터니온이 있다.
복소수 c = a + bi 의 공액복소수가 c~ = a - bi 로 정의되고..
복소수의 크기 |c| = √(cc~) = √(a²+ b²)로 정의 되듯이.. 
쿼터니온의 경우, 공액쿼터니온은 q~ = (s, -V) 로 정의되고, 쿼터니온의 크기도 마찬가지로 qq~ = s²+ |V|²= |q|² 로 정의된다.
그러므로 단위 쿼터니온은 qq~ = 1 인 쿼터니온이다.

이제 우리의 목표인 Angular displacement와 대등되는 결과가 나오려면.. 
p = (0, r)처럼 벡터성분만 있는 순수 쿼터니온에 qpq~ 처럼 단위쿼터니온과 그의 공액쿼터니온을 앞뒤로 곱해준다.
그러면 qpq~ = (0, (s²- V.V)r + 2V(V.r) + 2 sV x r) 가 되고, q 는 단위쿼터니온이므로 q = (cosΘ,sinΘn), |n| = 1 라고 둘 수 있다.
즉, s = cosΘ, V = sinΘn 이라는 얘기다. 
cos²Θ+ sin²Θ= 1 이므로 말된다.

좌우지간 이걸 위식에 대입하면..

qpq~ = (0, (cos²Θ- sin²Θ)r + 2sin²Θn(n.r) + 2cosΘsinΘn x r)
    = (0, cos2Θr + (1 - cos2Θ)n(n.r) + sin2Θn x r) 이 된다.

이걸 저번에 구해두었던 
Rr = (cosΘ)r + (1 - cosΘ)n(n.r) + (sinΘ) n x r 과 비교해보자. 
Θ에 2가 곱해진것 외에는 동일한 결과가 나왔다. 
이건 다시말하면 벡터 r을 Angular displacement (Θ, n)으로 회전 시키는 것은 Angular displacement를 쿼터니온 공간으로 옮겨와서 단위쿼터니온 q = (cos(Θ/2), sin(Θ/2)n) 로 표시하고 쿼터니온 (0,r) 에다 다음과 같은 계산을 하는 것이다.

q(0,r)q~

결론적으로 말하면 3차원 공간에서 (Θ, n)으로 표시되는 임의 회전축 n에 대한 회전은 쿼터니온 공간(일종의 4차원 공간)의 단위 쿼터니온 (cos(Θ/2), sin(Θ/2)n) 과 같다는 것이다.
2차원 평면에서 Θ만큼 회전 한 것이..

결국 복소평면의 단위복소수 (cosΘ, sinΘ) 에 대응되는 것과 흡사한 결과인 것이다.

그럼 이런 유용한 쿼터니온을 구체적으로 어떻게 활용하는 지는 다음에...

반응형

+ Recent posts