보관물

7월 13, 2011에 대한 보관물

Quatemion

7월 13, 2011 댓글 남기기

Quatemion
– 4차원 벡터
q = w + xi + yj + zk
= (w, x, y, z) = (w, v) = (s, v)

– 벡터 v가 회전축을 표현하지만 정규화 되면서 sin(theta/2)로 비례 축소
– 정규화된 쿼터니언에서 w가 회전각 theta를 표현
w = cos(theta / 2)
x = Axis.x * sin(theta / 2)
y = Axis.y * sin(theta / 2)
z = Axis.z * sin(theta / 2)

ex)
(0, 0, 1) PI / 4

w = cos(PI / 4) = sqrt2 / 2
x = 0sin(PI / 4) = 0
y = 0sin(PI / 4) = 0
z = 1sin(PI / 4) = sqrt2 / 2

특징
i^2 = j^2 = k^2 = -1
ij = -ji = k
jk – -kj = i
ki = -ik = j
ij – k
ji = -k

1) Q1 + Q2
= (w1, v1) + (w2, v2)
= (w1+w2, v1+v2)
2) Q1 * Q2
= (w1, v1) * (w2, v2)
= (w1, x1i, y1j, z1k) * (w2, x2i, y2j, z2k)
= (w1*w2 – w1*x2 – y1*y2 – z1*z2) +
(x1*w2 – w1*x2 – z1*y2 – y1*z2)i +
(y1*w2 – w1*y2 – z1*x2 – x1*z2)j +
(z1*w2 – w1*z2 – y1*x2 – x1*y2)k

= (w1*w2 – v1(내적)v2 + v1(외적)v2 + w1*v2 + w2*v1)

3)단위 사원수
q =
= 0i + 0j + 0k + 1

4)켤레사원수(Conjugate)
q = s+v, var q = s-v
q*var q = var q*q = q(내적)q = ||q||^2 = q^2

5)역수
0!=q, q^-1 = var q / q^2

6)변환
– Axis Angle to Quatemion
Q = (cos(theta/2), v*sin(theta/2))
– Quatemion to Axis Angle
Theta = 2 * acos(w)
회전축 = v / sin(theta/2)
– Quatemion to Matrix
F(p) = Q * P * Q^-1
= M * P
M = 1 – 2y^2 – 2z^2, 2xy-2zw, 2xz+2yw
2xy+2zw, 1-2x^2, 2yz-2xw
2xz-2yw, 2yz+2xw, 1-2x^2-2y^2
– 회전행렬 -> 사원수
R = (r00, r01…)
w = 1/2sqrt(R00+R11+R22+1)
x = 1/4w(R32-R12)
y = 1/4w(R02-R20)
z = 1/4w(R10-R01)

회전
F(p) = Q * P * Q^-1
여러회전(F1->F2)
F(p) = Q * P * Q^-1
F1(p) = Q1 * P * Q1^-1
F2(p) = Q2 * P * Q2^-1
= Q2 * (Q1*P*Q1^-1)*Q2-1
= (Q2Q1)P(Q2Q1)^-1
보간법
– 기본선형보간
Lerp(t) = (1-t)Q1 + tQ2
장점 : 간단, 매끄럽게 보간
단점 : t가 일정비율이 아님
3차원공간에서 x^2+y^2+z^2=1인 점이 모이면 원구면형성
4차원은 w^2+x^2+y^2+z^2=1
– 구형보간
theta = cos^-1(q1dotq2)
q(t) = (sin(theta)(1-t) / sin(theta)) * q1 + (sin(theta)(t) / sin(theta)) * q2
장점 : 일정비율
단점 : 복잡

카테고리:Programming
팔로우

모든 새 글을 수신함으로 전달 받으세요.