게임제작기법연구

게임제작기법 연구 14주차

ckhyeok 2020. 7. 14. 01:27

사원수는 왜 체가 성립되지 않는지 기술하시오.  

우선 위의 이유를 알려면 우선 체의 성질부터 알아야 합니다.

 

체의 성질
1. 덧셈에 대해 교환, 결합, 분배 법칙이 성립한다.
2. 곱셈에 대한 교환, 결합, 분배 법칙이 성립한다.
3. 덧셈의 항등원 0, 곱셈의 항등원 1이 존재한다.
4. 덧셈의 역원 -a, 곱셈의 역원 a^{-1}이 존재한다.

 

두 사원수 곱의 결과를 벡터와 내적으로 유도

유도 하기 전에 실수부와 허수부를 합친 q에 대해 알아야합니다.

$q=w+xi+yj+zk=(w,\vec{v})$

또한, 허수의 공식도 알아야 합니다.

$i^2=j^2=k^2=ijk=-1$

$ij=k, jk=i, ki=j$

 

이제 임의의 두 사원수$(q_1, q_2)$의 곱의 결과를 연산해보겠습니다.

$q_{1} \cdot q_{2} = (w_{1} w_{2} -x_{1} x_{2} - y_{1} y_{2} - z_{1} z_{2}) + (w_{1} x_{2} + x_{1} w_{2} + y_{1} z_{2} - z_{1} y_{2} )i$

$\quad \space \space \space \space \space \space+ (w_{1} y_{2} -x_{1} z_{2} + y_{1} w_{2} + z_{1} x_{2}) j +(w_{1} z_{2} + x{1} y_{2} -y_{1} x_{2} + z_{1} w_{2}) k$

 

$q_{2} \cdot q_{1} = 
(w_{2} w_{1} -x_{2} x_{1} - y_{2} y_{1} - z_{2} z_{1}) + 
(w_{2} x_{1} + x_{2} w_{1} + y_{2} z_{1} - z_{2} y_{1} )i$

$\quad \space \space \space \space \space \space +(w_{2} y_{1} - x_{2} z_{1} + y_{2} w_{1} + z_{2} x_{1}) j + (w_{2} z_{1} + x_{2} y_{1} - y_{2} x_{1} + z_{2} w_{1}) k$

 

위 연산을 통해 $q_1 \cdot q_2$ 와 $q_2 \cdot q_1$이 일치하지 않는 것을 알 수 있습니다.

따라서 체의 성질인 곱셈에 대한 교환 법칙이 성립되지 않습니다.

 

4차원 공간에서의 사원수 회전

오일러식을 이용해 4차원 공간에서 회전을 수행하는 사원수는 어떤 형태인지 기술하시오.

오일러의 공식에 의해 $e^{ix}=cosx+isinx$ 이 성립합니다. 단, ($i^2 = -1, \vert i \vert^2 = 1$)일때

Pure imaginary quaternion은 $\hat{r} = (0, \hat{v})$ 가 만족하므로,

$\|\hat{r}\|=1 \space,\space \hat{r}^2=x^2i^2+y^2j^2+z^2k^2=-1$ 또한 만족합니다.

그러므로 우리는 위 공식에서 $i$ 를 $\hat{r}$로 바꿀 수 있습니다.

따라서 $e^{\hat{r}\theta}=cos\theta+\hat{r}sin\theta=(cos\theta,\hat{r} sin\theta)$이 성립하게 됩니다.


3차원 공간 위의 벡터를 회전시키기 위해 위의 사원수를 그냥 사용하면 안되는 이유에 대해 설명하시오.

쿼터니언은 4차원입니다. 또한 Pure imaginary quaternion을 사용하여 계산 할 시에

$v \cdot q=v'= (0,(x,y,z))\cdot(cos\theta,sin\theta\cdot \hat{n})$

$\quad \space \space \space = (0,(x,y,z))\cdot(cos\theta,(sin\theta\cdot a,sin\theta\cdot b, sin\theta\cdot c))$

$\quad \space \space \space = (-(axsin\theta+bysin\theta+ czsin\theta), ... )$

위와 같은 결과가 나오게 되며, 실수부의 공간 회전이 아닌 전혀 다른 공간에서 회전을 하게 됩니다.

따라서 3차원 공간에 표현하기 위해서는 똑같은 공간에 존재하는 점으로 변환시켜야 합니다.

3차원 공간에서의 사원수 회전

3차원 공간에서 임의의 벡터 v에 대해 회전하는 공식은 v'=qvq*이 된다. 이를 임의의 벡터 두 부분으로 설명하시오

$r = (?, a, b, c) = (cos\theta, \hat{n}sin\theta$ 이며,  $(|\hat{n}|^2 = 1, \hat{n}^2 = -1)$ 의 특징을 가지고 있습니다.

원점으로부터 $v$ 까지의 벡터를 분해하면 회전축에 대해 수직인 부분과 수평인 부분이 생기게 됩니다.

수직인 부분은 $(0, v_\perp)$이며,

수평인 부분은 $(0, v_\parallel)$입니다.

그 결과 $v = v_\perp + v_\parallel$임을 알 수 있습니다.

위 식들을 사용해 다음과 같이 계산합니다.

$q_1 \cdot q_2 = (w_1w_2 - (\vec{v_1}\cdot \vec{v_2}), w_1\vec{v_2} + w_2\vec{v_1} + v_1 \times v_2)$
$\begin{align} r\cdot p & = r\cdot (p_{\perp} + p_{\parallel}) \\\ & = r\cdot p_{\perp} + r\cdot p_{\parallel} \end{align}$
$\begin{align} r\cdot p_{\perp} & = (cos\theta, \hat{n}sin\theta) \cdot (0, v_{\perp}) \\\ & = (0, cos\theta \cdot v_{\perp} + (\hat{n}sin\theta)\times v_{\perp}) \\\ r\cdot p_{\parallel} & = (cos\theta, \hat{n}sin\theta) \cdot (0, v_{\parallel}) \\\ & = (-(\hat{n}sin\theta \cdot v_{\parallel}), cos\theta \cdot v_{\parallel}) \end{align}$
교환 법칙으로 풀이 하면 다음과 같습니다.
$p_{\perp}\cdot r = (0, cos\theta \cdot v_{\perp} - (\hat{n}sin\theta)\times v_{\perp})$
$p_{\parallel}\cdot r = (-(\hat{n}sin\theta \cdot v_{\parallel}), cos\theta \cdot v_{\parallel})$

평행하는 $r\cdot v_\perp$는 교환법칙이 성립되며,

$r\cdot v_\parallel$ 같은 경우에는 - 회전을 하게 됩니다.

 

그 결과 다음과 같은 식을 얻을 수 있습니다.
$e^{r\theta}\cdot v_{\parallel} = v_{\parallel}\cdot e^{r\theta}$
$e^{r\theta}\cdot v_{\perp} = v_{\perp}\cdot e^{r(-\theta)}$


위 식을 통해 다음과 같은 결과를 얻을 수 있습니다.
$\begin{align} p' & = p_{\parallel} + p_{\perp}' \\\ & = p_{\parallel} + e^{r\theta} p_{\perp} \\\ & = e^{r\frac{\theta}{2}}e^{r\frac{-\theta}{2}}p_{\parallel} + e^{r\frac{\theta}{2}}e^{r\frac{\theta}{2}} p_{\perp} \\\ & = e^{r\frac{\theta}{2}}p_{\parallel}e^{r\frac{-\theta}{2}} + e^{r\frac{\theta}{2}}p_{\perp}e^{r\frac{-\theta}{2}} \\\ & = e^{r\frac{\theta}{2}}(p_\parallel + p_\perp)e^{r\frac{-\theta}{2}} \\\ & = e^{r\frac{\theta}{2}}pe^{r\frac{-\theta}{2}} \end{align}$

 

두 사원수 회전을 미리 곱해두고 회전하는 것과 두 번 회전하는 것과 결과가 같음을 대수적 성질로 증명하시오. 

$v'$는 다음과 같이 표현할 수 있습니다.

$v' = q_1 v q_1^*$

$v\prime \prime = q_2 v' q_2^* = q_2 q_1 v q_1^* q_2^*  = (q_2 q_1) v (q_2 q_1)^*$

사원수의 활용 

 v'=qvq*의 결과는  v+wt+n×t   ( 여기서 n은 회전 축 , w는 회전 사원수의 실수부, t = 2(nxv) ) 과 동일하다. 
위 식을 직접 유도하시오.  ( 유도할 때 내적과 외적의 성질을 주의깊게 활용할 것. )

 

유도하기에 앞서 우선 아래 그동안 알아온 정보를 이용해야 합니다.

$q_1\cdot q_2 =(w_1w_2-(v1\cdot v2), w_1v_2+w_2v_1 + v_1\times v_2) $

$n\cdot v = v\cdot n, \quad n\times v = -v\times n$
$a\times (b\times c) = b\cdot(a\cdot c) - c\cdot(a\cdot b)$
$(a\times b)\times c = -a\cdot(b\cdot c) + b\cdot(a\cdot c)$

 

위 사항들을 숙지 한 상태로 계산하면 다음과 같은 풀이를 할 수 있습니다.

$v' = (0, v+wt+n\times t )\space \space(t=2(n\times v))$

$\quad = (0, v+2w(n\times v)+2(n\times(n\times v)))$
$\quad = (0, v + 2w(n \times v) + n \times (n \times v)+n \times (n \times v))$
$\quad = (0,v + 2w(n \times v) + n \cdot v \cdot n - (n \cdot n)v  - (n \times v) \times n)$
$\quad = (0,2w(n\times v) + v + n \cdot v \cdot n - (n \cdot n)v  - (n \times v) \times n)$
$\quad = (0,2w(n\times v) +n \cdot v \cdot n +(1 - n^2)v - (n\times v) \times n)$
$\quad = (0,2w(n \times v)w +  n \cdot v \cdot n + w^2v - (n \times v) \times n)$
$\quad =(-(n \cdot v)w + (v \cdot n)w + (n\times v) \times n,n \cdot v \cdot n + w^2v + (n \times v)w - (v \times n)w - (n \times v) \times n)$
$\quad = (-n \cdot v, w\cdot v + n \times v)(w ,-n)$
$\quad = (w,n)(0, v)(w, -n)$
$\quad = qvq^*$

단,  $\space q: (w, n), q^*:(w, -n))$

'게임제작기법연구' 카테고리의 다른 글

게임제작기법연구 15주차  (0) 2020.07.20
게임제작기법연구 13주차  (0) 2020.07.07
게임제작기법연구 12주차  (0) 2020.06.29
게임제작기법연구 11주차  (0) 2020.06.22
게임제작기법연구 10주차  (0) 2020.06.16