본문 바로가기

공부/Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문

[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 11 - 오일러 변환 및 쿼터니언 [2/2]

728x90
반응형

 

 

 

11.3 쿼터니언

 

11.3.1 쿼터니언 표현

 

쿼터니언

  • 쿼터니언 q는 복소수를 확장한 것으로 네 개의 항으로 표현된다.
  • 여기서 q_x, q_y, q_z는 허수부(imaginary part)를 구성하고, q_w는 실수부(real part)인데, i, j, k허수단위(imaginary unit)라 한다.

 

허수단위의 특징

  • 허수단위는 다음과 같은 특징을 가진다.
  • 두 개의 서로 다른 허수단위가 곱해지면 다음과 같은 순환치환(cyclic permutation)적인 특징을 가진다.

 

쿼터니언의 곱
q의 켤레 쿼터니언

 

  • 일반 복소수처럼 쿼터니언도 켤레(conjugate)를 가진다.
  • 허수부를 음수로 만드는 게 켤레 쿼터니언이다.
  • 식을 이용하면 두 개의 쿼터니언 p와 q에 대해 (pq)* = q*p*임을 쉡게 증명할 수 있다.

 

 

단위 쿼터니언

  • 쿼터니언의 크기(norm)는 일반적인 벡터의 경우와 같은 방법으로 계산된다.
  • q의 크기 즉 ||q||가 1이라면 q는 단위 쿼터니언(unit quaternion)이라 불린다.

 

 

 

11.3.2 쿼터니언을 이용한 회전

 

쿼터니언을 이용한 회전
p와 q의 곱

  • 이제 x를 실수부로 y를 허수부로 가지는 복소수 x+yi를 p라 표기하고, 회전각 ∂가 주어졌을 때 이를 크기가 1인 극형식(polar form)의 복소수로 표현하면 cos∂ + sin∂i가 된다.
  • p와 q를 곱하면 복소수의 실수부와 허수부는 각각 x' 및 y'와 일치함을 발견할 수 있다. 즉, 복소수를 이용하여 2차원 회전을 표현한 것이다.

 

 

3차원 회전
크기가 1인 극형식의 쿼터니언

  • 먼저 u를 자신의 길이로 나누어 단위 벡터 u를 만들면 다음과 같이 정의된다.

 

p'

  • 마지막으로 p를 u (혹은 u) 중심으로 ∂만큼 회전하는 것은 다음과 같이 표현된다.
  • 두 개의 쿼터니언을 곱하면 새로운 쿼터니언이 된다.
  • 허수부는 p의 회전 결과인 p'와 같게 된다.
  • 복소수의 확장판인 쿼터니언으로 3차원 회전을 표현할 수 있다.

 

 

11.3.3 쿼터니언의 보간

 

[0, 1] 범위에서 정규화된 쿼터니언

  • [0, 1] 범위에서 정규화된 파라미터 t를 사용해 다음처럼 보간된다.

 

구체 선형보간

  • q와 r의 내적은 다음과 같다. = cos∮
  • 다음 식은 선형보간의 변형으로, 구체 선형보간(spherical linear interpolation; slerp)이라 부른다.

 

 

 

 

 


 

 

 

 

 

요약

 

  • 오일러 변환은 물체에 임의의 방향을 주는 임의의 회전을 주축 중심의 회전 조합으로 표현한 것이다.
  • 위의 회전을 오일러가 아닌 쿼터니언으로도 표현할 수 있다. 하지만, 쿼터니언은 slerp를 통해 잘 보간된다.
  • 쿼터니언은 행렬로써 변환이 가능하다.
  • 오일러는 키프레임 회전 데이터로는 사용하지않지만, 대신 쿼터니언을 사용한다.

 

 

 

 


 

 

 

 

 

 

출처

한정현 - [OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문]을 보고 공부하고 정리한 내용입니다.

728x90