
앞서 배운 로드리게스 변환 공식으로 부터 축에 대한 회전 결과는 위와같이 나온다는 것을 알 수 있다.
그렇다면 쿼터니언 회전은 어떻게 계산 될까
lhs 와 rhs 에 따라 시계방향이 + 일 수도 있고 - 일 수도 있는데
일단 rhs 기준으로는
반시계방향이 + 고
위와같은 회전은 기준 축 N 을 (xi+yj+zk) 의 3d vector로 표현할 수 있고 회전 값 theta 를 w 로 표현할 수 있다.
그러면 보통 실수부에 직교성을 가지는 수를 허수라고 표현함에 따라
xi+yj+zk 는 허수 부고 w 는 회전 량을 나타내는 실수 부가 되어 복소수로 표현되겠다.
일단 qz 를 먼저 생각해볼까
qz는 z 축에 대한 w 만큼 회전이다. 그렇다면 n= (0,0,1) 이 될테고 이 축에 대한 회전은
v' = v cos θ +(1-cos θ)(V · (0,0,1))+((0,0,1)x V) sin θ 이 될텐데 V 를 vx,vy,vz 의 벡터라고 보면 \
외적은 아래와같이 계산될거고

v' = v cos θ + (1-cos θ) (0,0,vz)+ (-vy, vx, 0)sin θ 가 될거고 이걸 vx,vy,vz 로 분류하면
(vx cos θ - vysin θ, vycos θ + vxsin θ, vz) 가 돼서
V' = (v'x, v'y, v'z) 라 할때
v'x = vx cos θ - vysin θ
v'y= vycos θ + vxsin θ
v'z = vz
가 된다.
여기서 Z 축 단위벡터 k = (0,0,1) 에 대한 회전 쿼터니언을
q= k sinθ + cos θ 로 놓고 q^-1 = - k sin θ+cos θ 라고 두면
v' = qvq^-1 로 된다고 보면
qv = (cos θ +ksin θ )(vxi+vyj+vzk)
= cos θ(vxi+vyj+vzk)+ ksin θ (vxi+vyj+vzk)
= cos θ(vxi+vyj+vzk) + sin θ(-vyi+vxj-vz)
= (vxcos θ-vysin θ)i, (vycosθ + vxsinθ)j, vzcos θ k, -vzsin θ
(qv)q^-1 계산하면
((vxcos θ-vysin θ)i +(vycosθ + vxsinθ)j + vzcos θ k -vzsin θ)(cos θ - ksin θ)
= (vx cos^2 θ-vysin θcos θ)i+(vycos^2 θ+vxsin θcos θ)j+vzcos^2 θ k - vzsin θcos θ
-vx sin θcos θ (ik)+vysin^2 θ (ik) -vyksin θcos θ (jk)-vxsin^2 θ(jk)+vzsin θcos θ(k*(-k))-vzsin^2 θ(k)
ik= -j , jk = -i, k*(-k) = 1
(vx cos^2 θ-vysin θcos θ)i+(vycos^2 θ+vxsin θcos θ)j+vzcos^2 θ k - vzsin θcos θ
-vx sin θcos θ (-j)+vysin^2 θ (-j) -vysin θcos θ (-i)-vxsin^2 θ(-i)+vzsin θcos θ(1)-vzsin^2 θ(k)
뭐 이거 계산하면 배각공식 반각공식 난무한다. 여튼 계산 결과로는
Z축으로 만큼 돌리고 싶으면
q=(0,0,sin(ψ/2),cos(ψ/2))
로 표현된다....
그래서 결국

이 렇게 깡으로 계산된다고.... (Z->Y->X 순서 Right Handed 로 회전한다는 전제 하에)
| 쿼터니언 이해 예습 - 로드리게스 회전 공식 (0) | 2025.12.15 |
|---|---|
| ECEF->Unreal 회전 좌표계 변환 (0) | 2025.12.08 |
| 저비용으로 나무를 머티리얼 활용만으로 최대한 사실 적으로 만들기 (0) | 2025.12.03 |
| 블렌더>언리얼 FBX 텍스쳐 무손실 export 및 import 방법 (0) | 2025.12.03 |
| 변수 변화값 탐지 알고리즘 (0) | 2025.10.31 |