1 / 11

사원수 (Quaternion)

사원수 (Quaternion). 이창희 (cagetu79@gmail.com). 사원수. 회전을 사용할 때 행렬 대신 사용하곤 하는 수학적 개념 행렬에 비해 저장 공간이 적다 회전들의 결합에 필요한 연산이 적다 보간을 할 때 좀 더 매끄러운 애니메이션이 가능. 사원수의 성질. 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 )

Download Presentation

사원수 (Quaternion)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 사원수(Quaternion) 이창희(cagetu79@gmail.com)

  2. 사원수 • 회전을 사용할 때 행렬 대신 사용하곤 하는 수학적 개념 • 행렬에 비해 저장 공간이 적다 • 회전들의 결합에 필요한 연산이 적다 • 보간을 할 때 좀 더 매끄러운 애니메이션이 가능

  3. 사원수의 성질 • q = w+xi+yj+zk = s + v • i2=j2=k2=-1, ii=jj=kk=-1ij=-ji=k, jk=-kj=i, ki=-ik=j • q1+q2 = (s1+s2)+ (v1+v2) • q1q2 = s1s2 – v1•v2+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

  4. 사원수 성질 • (q1*q2)*q3 = q1*(q2*q3) • q1*q2 != q2*q1 • ~(~q) = q • ~(q1*q2) = ~q2 * ~q1 • ~(q1+q2) = ~q1+~q2

  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

  6. 회전 • 사원수q에 임의의scalar를 곱한 것 역시q와 동일한 회전 • qPq-1을 3x3행렬로 변환

  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

  8. 보간 • 선형보간q(t) = (1-t)q1 + tq2 • 사원수 공간은 구면공간의 성격을 띄는데 선형보간을 하게되면 오차가 생긴다 • 정규화를 통해 보정가능

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

  10. Gimbal Lock • yaw(y축 회전각)을 90로 고정시키고 pitch(x축), roll(z축) 회전을 실시했을 경우 pitch 와 roll 회전이 같은 방향으로 회전하게 됨(이것이 gimbal lock) • 오일러 각으로 회전을 표현할경우 전체 회전행렬 = z축 회전행렬 * y축 회전행렬 * x축 회전행렬 과 비슷한 순서의 회전행렬(회전행렬의 순서는 사용자 임의로 바꿀수 있으며 이때 gimbal lock 되는 축도 그에 따라 바뀜)을 사용하게 되는데 이때 yaw각을 90도로 회전시켰을 경우(회전행렬의 순서상) x축이 -z축이 되어 x축회전을 하나마 나한 상태가 됨 • 사원수의 회전을 이용하여 문제를 해결

  11. 참고 • Eric Lengyel, Mathematics fo 3d game programming & computer graphics, charles river media, chapter 3 • http://g-matrix.pe.kr/feature/3dengine/quaternion.htm • Physics for Game Developers(사원수연산) • http://www.cc.gatech.edu/grads/z/Howard.Zhou/micellaneous/links_local/EularQuats.htm • http://www.gamedev.net/reference/articles/article1095.asp • http://www.gpgstudy.com/gpgiki/MathTemplate

More Related