11
사사사 (Quaternion) 이이이 ([email protected] m)

사원수 (Quaternion)

Embed Size (px)

DESCRIPTION

사원수 (Quaternion). 이창희 ([email protected]). 사원수. 회전을 사용할 때 행렬 대신 사용하곤 하는 수학적 개념 행렬에 비해 저장 공간이 적다 회전들의 결합에 필요한 연산이 적다 보간을 할 때 좀 더 매끄러운 애니메이션이 가능. 사원수의 성질. q = w+xi+yj+zk = s + v i 2 =j 2 =k 2 =-1, ii=jj=kk=-1 ij=-ji=k, jk=-kj=i, ki=-ik=j q1+q2 = (s 1 +s 2 ) + (v 1 +v 2 ) - PowerPoint PPT Presentation

Citation preview

Page 1: 사원수 (Quaternion)

사원수(Quaternion)

이창희 ([email protected])

Page 2: 사원수 (Quaternion)

2

사원수

회전을 사용할 때 행렬 대신 사용하곤 하는 수학적 개념

행렬에 비해 저장 공간이 적다회전들의 결합에 필요한 연산이 적다보간을 할 때 좀 더 매끄러운 애니메이션이 가능

Page 3: 사원수 (Quaternion)

3

사원수의 성질 q = w+xi+yj+zk = s + v i2=j2=k2=-1, ii=jj=kk=-1

ij=-ji=k, jk=-kj=i, ki=-ik=j

q1+q2 = (s1+s2) + (v1+v2) q1q2 = s1s2 – v1 v• 2+s1v2+s2v1+v1*v2

q*~q = ~q*q = q q =• |q|2 = q2

norm(q) = q*~q

q-1 = ~q/norm(q) = ~q/q2

q*q-1 = 1

Page 4: 사원수 (Quaternion)

4

사원수 성질

(q1*q2)*q3 = q1*(q2*q3)q1*q2 != q2*q1~(~q) = q~(q1*q2) = ~q2 * ~q1~(q1+q2) = ~q1+~q2

Page 5: 사원수 (Quaternion)

5

회전 P’= qPq-1

준동형 (homomorphism) 사상– Φ는 길이 ,각도 ,축이 모두 보존된다 .– Φ(P1)Φ(P2)=Φ(P1P2)– Φq(P) = qPq-1

– Φq(P1)Φq(P2)=qP1q-1 qP2q-1=qP1qP2q-1=Φq(P1P2) qPq-1 =(s+v)P(s-v)=(s2-t2)P+2stA*P+2t2(A P)A•

– P’=cosθP+(A*P)sinθ+(A P)A(1-cosθ)•( 임의의 축에 대한 회전 공식 ) 과 비교

– s2-t2=cosθ,2st=sinθ,2t2=1-cosθ

축 u( 단위벡터 ) 을 중심으로 회전q = cos(θ/2) + sin(θ/2)u

Page 6: 사원수 (Quaternion)

6

회전

사원수 q 에 임의의 scalar 를 곱한 것 역시 q 와 동일한 회전

qPq-1을 3x3 행렬로 변환

Page 7: 사원수 (Quaternion)

7

Euler오일러각을 이용하여 사원수 만들기

– 오일러각은 x축 ,y 축 ,z 축을 중심으로 회전을 정의qroll =cos(θr/2)+sin(θr/2)i+0j+0kqpitch =cos(θp/2)+0i+sin(θp/2)j+0kqyaw =cos(θy/2)+0i+0j+sin(θy/2)k

– Q = qrollqpitchqyaw

사원수를 이용하여 오일러각 알아내기– 사원수를 회전 행렬로 변환– sinθr=-r31– tanθp=r31/r33– tanθy=r21/r11

Page 8: 사원수 (Quaternion)

8

보간선형보간q(t) = (1-t)q1 + tq2

사원수 공간은 구면공간의 성격을 띄는데 선형보간을 하게되면 오차가 생긴다

정규화를 통해 보정가능

Page 9: 사원수 (Quaternion)

9

보간

구면 선형 보간 일반적으로 선형보간으로 오차가 그리 크다고 보지 않기에 애니메이션을 구현할 때같은 경우 선형보간을 주로 이용

Page 10: 사원수 (Quaternion)

10

Gimbal Lock yaw(y 축 회전각 ) 을 90 로 고정시키고 pitch(x 축 ), roll(z

축 ) 회전을 실시했을 경우 pitch 와 roll 회전이 같은 방향으로 회전하게 됨 ( 이것이 gimbal lock)

오일러 각으로 회전을 표현할경우 전체 회전행렬 = z 축 회전행렬 * y 축 회전행렬 * x 축 회전행렬 과 비슷한 순서의 회전행렬 ( 회전행렬의 순서는 사용자 임의로 바꿀수 있으며 이때 gimbal lock 되는 축도 그에 따라 바뀜 ) 을 사용하게 되는데 이때 yaw 각을 90 도로 회전시켰을 경우 ( 회전행렬의 순서상 ) x 축이 -z 축이 되어 x 축회전을 하나마 나한 상태가 됨

사원수의 회전을 이용하여 문제를 해결

Page 11: 사원수 (Quaternion)

11

참고 Eric Lengyel, Mathematics fo 3d game programming & co

mputer graphics, charles river media, chapter 3 http://g-matrix.pe.kr/feature/3dengine/quaternion.h

tm Physics for Game Developers( 사원수연산 ) http://www.cc.gatech.edu/grads/z/Howard.Zhou/micell

aneous/links_local/EularQuats.htm http://www.gamedev.net/reference/articles/article10

95.asphttp://www.gpgstudy.com/gpgiki/MathTemplate