MathJax

2011년 12월 6일 화요일

Quaternions 정리1


복수수의 확장판

표현
q = ( v, w) = (x, y, z, w) = xi + yj + zk + w 
v: 사원수의 허수부, (  i, j, k 허수 단위)
w: 사원수의 실수부

혹은

q = v + s 
v: 사원수 허수부
s: 사원수 실수부

허수부들의   성질
i2 + j2 + k2 = -1
i j = -j i = k
j k = -k j = i
k i = -i k = j

허수부에 더하기, 크기, 내적, 외적 모든 벡터 연산 사용 가능

두개의 사원수 q, r ( 허수 단위들간의 곱셈을 비가환적)
qr = (iqx + jqy + kqz + qw) (irx + jry + krz + rw)
     = i (qyrz - qzry + rwqx + qwrx) + j (qzrx - qxrz + rwqy + qwry) + k (qxry - qyrx + rwqz + qwrz)
         + qwrw - qxrx - qyry - qzrz
     =( qv x rv + rwqv + qwrv, qwrw - qv • rv)

|  i   j   k |
| qx qy qz |
| rx ry rz    |
외적 공식은 i (qyrz - qzry) - j (qxrz - qzrx ) + k (qxry - qyrx

덧셈:  q + r = (qv, qw) + (rv, rw) = (qv +  rv, qw  + rw)
공액(켤레, conjugate): q* = (qv, qw)* = (-qv, qw)
(norm): ||q||2 = n(q) = qq* = qv .qv + qw2 = qx2 + qy2 + qz2 + qw2 (실수부만 남음)
항등 사원수: i = (0, 1)

곱셈역(multiplicative inverse): q-1
q-1q = qq-1 = 1 만족 해야 , 역도 마찬가지로 만족해야

놈의 정의로 부터 유도함
||q||2 = qq*     1 = qq* / ||q||2 , q-1 = q* / ||q||2


스칼라 곱은 가환적
(가환적: 연산의 순서를 바꾸어도 결과가 변하지 않는
 실수 전체의 집합에서는 덧셈과 곱셈이 가환적)
sq = (0, s) (qv, qw) = (sqv, sqw)
qs = (qv, qw) (0, s) = (sqv, sqw)

공액 규칙:
(q*)* = q
(q + r)* = q* + r*
(qr)* = r* q*

놈의 규칙:
n(q*) = n(q)
n(q r) = n(q) n(r)

곱셈의 법칙
선형성:
p ( sq + tr ) = spq + tpr
( sp + tq ) = spr + tqr

결합법칙:
p(qr) = (pq)r

단위 사원수: q = (qv, qw) n(q)=1
그러므로  q = (sinøuq, cosø) = sinøu + cosø  
||uq|| = 1 3차원 벡터 uq 대해 만족됨

이유: uq • uq = 1 =||uq||2 만족되는 경우에 다음과 같이 되기 때문
n(q) = n(sinøuq, cosø) = sin2 ø (uq • uq) + cos2ø = sin2ø + cos2ø = 1

단위 사원수는 매우 효율적인 방법으로 회전 & 방향 전환 가능

복소수의 2차원 단위 벡터는 cosø + i sin ø = e
사원수에서 이와 동등한 식은 q = sinøuq + cosø = eøuq



단위 사원수에 대한 
로그: log(q) = log(eøuq) = øuq
멱함수: qt = (sinøuq + cosø)t  = eø t uq = sin(øt)uq + cos(øt)

참고 자료: Real-Time Rendering 2판

댓글 없음:

댓글 쓰기