2014년 1월 14일 화요일

사원수 회전 (Quaternions Rotation)

사원수(Quaternions)의 회전은 아래와 같이 나타낼 수 있다.
P: 회전이 필요한 점
q: 회전축 및 각도가 표현된 사원수




s: scalar value
v: vector value

그럼 위 식을 차례대로 풀어서 정리해 보자.

먼저 아래 공식을 기억해 두고 하나씩 정리한다.






스칼라 및 벡터 연산에 대하여 주의하면서 풀어나가면 된다.
위 식에서 앞 부분을 조금 풀어보면













그리고 게속해서 나머지를 정리한다.
















여기서 v를 단위벡터A와 길이 t로 표현하여 위의 식을 계속 정리하면








SA:skew matrix of A
I: identity matrix

그리고 Axis-Angle Rotation으로 표현했던 아래 식을 상기 시켜
위의 식과 비교해 보면 다음과 같은 결과가 나온다.








위의 3개 식을 풀어서 s, t값을 구한다.
풀이에는 삼각함수의 반각공식(half-angle relations)을 사용하면 된다.












구해진 s, t를 사용하여 사원수 q를 다시 표현하면 다음과 같아진다.





: unit vector of A


이것으로 쿼터니언에서 표현되는 회전각은 1/2값임을 알 수가 있다.

위에서 구해진 식에서 앞쪽 행렬 부분이 사원수의 회전 표현식이 되고
이것을 계속 행렬로 정리한다.



여기서 정리 하기 전에 아래의 관계를 적용한다.












계속해서 행렬을  정리해 나가면














식을 좀 더 간단히 만들기 위해 단위 사원수로 바꾸어 생각한다.
여기서 사원수 q가 단위 사원수가 되면 다음이 성립한다.





이것을 이용해서 행렬식을 다시 정리하면















마지막으로 행렬식을 하나로 합치면






이 행렬식을 사용하여 사원수q를 행렬로 변환하여 사용하면 된다.

참고자료
Essential Mathematics For Games And Interactive Applications
3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학 제2판
Real-Time Rendering 2판

댓글 없음:

댓글 쓰기