Skip to content

Instantly share code, notes, and snippets.

@damhiya
Last active November 25, 2023 06:18
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save damhiya/a901297ccbbf4286006861a29fbed51c to your computer and use it in GitHub Desktop.
Save damhiya/a901297ccbbf4286006861a29fbed51c to your computer and use it in GitHub Desktop.
Rotation

회전

회전에 대해 알아보자. 2차원에선 간단하지. 점 $(x,y)$$\theta$만큼 회전시킨 좌표 $(x',y')$은 이렇게 표현이 돼.

$$ \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos \theta & \sin \theta \\ {- \sin \theta} & \cos \theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} $$

3차원 회전은 어떻게 표현할 수 있을까? 오일러 각 같은걸 떠올릴 수도 있겠지만 난 그런 머리아픈건 별로 안좋아해서 좀 더 추상적으로 회전의 본질에 대해 얘기해볼게.

강체변환

강체변환(rigid transformation)은 강체의 운동을 설명하기 위해서 도입하는 개념이야. 강체는 형상이 변형되지 않는 딱딱한 한 덩어리의 물체이기 때문에 운동 할 때 강체를 구성하는 입자들 간의 상대적인 거리는 변하지 않아. 공간상의 회전을 나타내기에 적절해보이지?

강체변환은 유클리드 공간 $\mathbb{R}^n$에서 두 점 사이의 거리가 달라지지 않는 변환, 즉 이런 함수야

$$ T : \mathbb{R}^n \to \mathbb{R}^n $$

$$ \lVert u-v \rVert = \lVert T(u) - T(v) \rVert \text{\quad for all } u,v $$

강체변환의 정의는 굉장히 직관적이라고 생각해. 앞서 말한 강체에 대한 설명을 수학적으로 표현했을 뿐이니까. 강체변환에 대해 알 수 있는 사실이 뭐가 있을까?

1. 내적 보존

$T(0) = 0$인 강체변환 $T$는 길이와 내적을 보존한다.

Proof. 강체변환의 성질에서 $v=0$ 인 경우를 생각하면

$$ \begin{array}{ll} & \lVert u - 0 \rVert = \lVert T(u) - T(0) \rVert \\ \Rightarrow & \lVert u \rVert = \lVert T(u) \rVert \end{array} $$

이므로 길이를 보존.

$$ \begin{array}{ll} & \langle u-v, u-v \rangle = \langle T(u)-T(v), T(u)-T(v) \rangle \\ \Rightarrow & \langle u, u \rangle + \langle v, v \rangle - 2 \langle u, v \rangle = \langle T(u), T(u) \rangle + \langle T(v), T(v) \rangle - 2 \langle T(u), T(v) \rangle \\ \Rightarrow & \langle u,v \rangle = \langle T(u), T(v) \rangle \end{array} $$

이므로 내적도 보존.

2. 선형성

$T(0) = 0$인 강체변환 $T$는 선형변환이다.

Proof.

$$ \begin{array}{l} \lVert T(au+v) - (aT(u) + T(v)) \rVert^2 \\ = \lVert T(au+v) \rVert^2 + \lVert aT(u) \rVert^2 + \lVert T(v) \rVert^2 -2 \langle T(au+v), aT(u)+T(v) \rangle +2 \langle aT(u), T(v) \rangle \\ = \lVert au+v \rVert^2 + a^2 \lVert u \rVert^2 + \lVert v \rVert^2 -2a \langle au+v, u \rangle -2 \langle au+v, v \rangle +2a \langle u, v \rangle \\ = \lVert au+v \rVert ^2 - (\lVert au \rVert^2 + \lVert v \rVert^2 +2 \langle au, v \rangle) \\ = 0 \end{array} $$

이므로 $T(au+v) = aT(u) + T(v)$. 즉, $T$는 선형.

위의 두가지 사실로부터 멋진 결론을 얻을 수 있는데, 어떤 강체변환 $T$가 있을 때, $T'(u) = T(u) - T(0)$는 강체변환이면서 $T'(0) = 0$을 만족하지. 그러면 $T$

$$ T(u) = T'(u) + T(0) $$

로 표현이 되고, 이때 $T'$은 내적을 보존하는 선형변환이 돼. 딱 봐도 뒤의 $T(0)$는 병진운동(translation)에 관련된 항이겠지? 우리 관심사인 회전은 내적을 보존하는 선형변환 $T'$과 관련 되어있어.

회전군

우린 유클리드 공간의 선형변환을 다루고 있으니까 당연히 이걸 행렬로도 표현할 수 있어. 내적을 보존하는 행렬은 직교행렬(orthogonal matrix) 이라고 하는데, 다시말해 다음과 같은 행렬 $Q \in \mathbb{R}^{n \times n}$ 이야.

$$ (Qu)^\intercal (Qv) = u^\intercal Q^\intercal Q v = u^\intercal v \text{\quad for all } u, v $$

그런데 이게 임의의 벡터 $u,v$에 대해 성립한다는 말은 곧 $Q^\intercal Q = I$ 임을 함의해. (잘 모르겠으면 u, v 에 표준기저 벡터들을 대입해보면 알 수 있음)

직교군(orthogonal group) $\mathrm{O}(n)$은 이런 행렬들의 집합이야.

$$ \mathrm{O}(n) = \{ Q \in \mathbb{R}^{n \times n} \mid Q^\intercal Q = I \} $$

과연 이 $\mathrm{O}(n)$이 우리가 생각하는 "회전"들의 집합일까? 이런 행렬을 생각해봐.

$$ Q = \begin{pmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} $$

이 행렬은 3차원 공간에서 yz평면에 대한 대칭이동을 표현하는데, $Q^\intercal Q = I$를 만족하기 때문에 직교행렬이야. 즉 직교행렬은 회전 이외에 대칭이동 또한 포함해. 사실 우리는 강체변환에서 출발했으니까, 대칭도 포함되는게 당연하지. 점들을 대칭한다고 거리가 변하지는 않으니까. 그럼 직교행렬을 대칭과 회전으로 분류할 수 있을까?

직교행렬의 행렬식을 생각해보자. $Q^\intercal Q = I$ 니까

$$ \det(Q^\intercal Q) = \det(Q)^2 = \det(I) = 1 $$

그럼 $Q$의 행렬식이 될 수 있는 값은 $\pm 1$ 두 개가 있겠지. 행렬식이 $-1$인 직교행렬은 대칭이동을 표현하고, 행렬식이 $+1$인 직교행렬은 회전을 표현해. 그리고 이런 회전행렬들을 모아놓은 집합을 회전군, 혹은 특수직교군(special orthogonal group) $\mathrm{SO}(n)$ 이라고 불러.

$$ \mathrm{SO}(n) = \{R \in \mathrm{O}(n) \mid \det(R) = 1 \} $$

3차원 회전은 $\mathrm{SO}(3)$의 원소들로 표현되겠지.

각속도

이제 좀 물리적인 얘기를 해볼게. 물리에서는 물체의 운동을 다루지. 즉 시간이 개입돼. 회전의 시간 변화를 설명하는 가장 기초적인 물리량은 각속도고, 고전역학에서는 일반적으로 이 각속도 부터 이야기를 시작할거야.

2차원에서 각속도는 간단해. 그냥 각도를 시간에 대해 미분한 실수값이 각속도지.

$$ \omega = \frac{d\theta}{dt} $$

3차원에서 각속도는 벡터로 표현되는데, 회전축 단위벡터에 그 회전축에 대한 회전각의 시간미분을 곱한 값으로 정의돼.

그런데 과연 이 각속도 벡터가 회전의 시간미분에 대한 모든것을 설명할 수 있을까? 애초에 3차원 회전에서 회전축이라는게 잘 정의되는지 어떻게 확신하지? (적어도 내가 들은) 학부 고전역학에서는 이 부분을 제대로 해소하지 않고 넘어가는데 굉장히 불만족스러운 부분이야. 그러니까 $\mathrm{SO}(3)$의 원소인 회전행렬에서 시작해서 각속도의 개념을 유도해보자.

어떤 벡터 $r_0(t) \in \mathbb{R}^3$에 회전행렬 $R(t) \in \mathrm{SO}(3)$를 적용하는 상황을 생각해보자.

$$ r(t) = R(t) r_0(t) $$

양변을 미분하면

$$ \dot r = \dot R r_0 + R \dot r_0 $$

그런데 $R^\intercal R = I$ 의 양변을 미분하면

$$ \begin{array}{ll} & \dot R^\intercal R + R^\intercal \dot R = 0 \\ \Rightarrow & (R^\intercal \dot R)^\intercal + R^\intercal \dot R = 0 \\ \Rightarrow & R^\intercal \dot R \text{\quad is skew-symmetric} \end{array} $$

여기서 반대칭(skew-symmetric)이란 $S^\intercal = -S$ 를 만족한다는 뜻이야. $S = R^\intercal \dot R$ 이라고 하자. 모든 3차원 반대칭 행렬은 어떤 벡터 (여기선 $\omega$)의 외적으로 표현할 수 있어.

$$ S = \begin{pmatrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \end{pmatrix} = (\omega \times) $$

그러면 $\dot r$을 아래와 같이 표현할 수 있지.

$$ \begin{array}{rl} \dot r & = \dot R r_0 + R \dot r_0 \\ & = R(\dot r_0 + R^\intercal \dot R r_0) \\ & = R(\dot r_0 + S r_0) \\ & = R(\dot r_0 + \omega \times r_0) \\ \end{array} $$

물리 공부해본 사람이면 눈치챌 수 있는데, 이건 비관성좌표계에서 시간미분 구할 때 등장하는 식이야. 당연히 여기서 $\omega$가 바로 우리가 알던 각속도 벡터고.

근데 우리는 $\omega$를 완전히 대수적으로 유도했단 말이지. 여기에 대한 기하적인 직관을 얻을 수 있을까? 어떤 벡터를 고정된 회전축으로 회전시킬 때, 그 벡터가 회전축과 평행하다면 회전해도 변하지 않을거야. $r_0(t) = v_0$ 인 상황을 생각해보자. 그러면

$$\dot v = R(\omega \times v_0)$$

여기서 $\dot v = 0$ 이라면

$$ \begin{array}{ll} & R(\omega \times v_0) = 0 \\ \Leftrightarrow & \omega \times v_0 = 0 \\ \Leftrightarrow & \omega = 0 \text{\quad or\quad} v_0 = c \omega \text{ for some } c \in \mathbb{R} \end{array} $$

$\dot v = 0$ 이 되려면 $\omega = 0, \dot R = 0$이라서 회전행렬이 시간에 대해 변하지 않거나 $v_0$가 회전축 $\hat \omega$와 평행해야 해. 수학적으로 표현하면 $0$은 항상 $\dot R$의 고유값이고, 대응되는 고유공간의 차원은 1이거나 3인거지.

이제 우리는 3차원 회전에서 각속도와 회전축이 잘 정의된다고 할 수 있어. (회전축은 $\dot R \neq 0$인 경우에만)

사원수

사원수(quaternion)는 $i, j, k$ 3개의 허수부를 가진 수체계야. 실수부 까지 포함해서 총 4차원으로 이루어져있어.

$$ \mathbb{H} = \{ a + bi + cj + dk \mid a,b,c,d \in \mathbb{R} \} $$

덧셈, 뺄셈은 각 성분별 연산으로, 곱셈은 아래의 두 규칙과 결합법칙, 분배법칙으로부터 자연스럽게 정의돼. 곱셈의 교환법칙이 성립하지 않는다는 점에 주의하자.

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

$$ ij = k, \ ji = -k, \ jk = i, \ kj = -i, \ ki = j, \ ik = -j $$

예시.

$$ \begin{array}{rl} (1+2i+3j)(-i+j+k) & = -i + j + k - 2ii + 2ij + 2ik - 3ji + 3jj + 3jk \\ & = -i + j + k + 2 + 2k - 2j + 3k - 3 + 3i \\ & = -1 + 2i -j + 4k \end{array} $$

켤레, 절댓값, 나눗셈도 정의할 수 있어. 복소수랑 똑같아.

$$ \overline{a+bi+cj+dk} = a-bi-cj-dk $$

$$ \mid q \mid = \sqrt{q \overline q} $$

$$ q^{-1} = \frac{\overline q}{ \mid q \mid^2 } $$

회전 얘기하다가 뜬금없이 사원수가 왜 나오냐? 절댓값이 1인 복소수로 2차원 회전을 표현할 수 있는것처럼, 절댓값이 1인 사원수를 써서 3차원 회전을 표현할 수 있기 때문이야. 즉 $\mathrm{SO}(3)$의 원소들을 절댓값이 1인 사원수로 표현할 수 있다는 말! 이건 정말 좋은거야. 한번 쯤 들어본 말일 수 있는데, $\mathrm{SO}(3)$를 행렬로 표현하려면 실수가 9개 필요하지만, 사원수로 표현하면 4개면 충분해지니까.

복소수에서랑 사정이 좀 다른것도 있는데, $\mathrm{SO}(3)$와 절댓값이 1인 사원수들의 집합은 일대일 대응 관계는 아니야. 정확히는 회전 $R \in \mathrm{SO}(3)$ 한개에 대응 되는 크기가 1인 사원수는 $\pm q$로 두개씩 있어. 반대로 말하면 크기가 1인 사원수 $q$$-q$는 동일한 회전을 표현하는 사원수야.

그럼 구체적으로 사원수랑 회전행렬을 어떻게 대응시킬 수 있을까? 일단 3차원 벡터를 허수부만 있는 사원수로 표현해. 즉 $(x,y,z)$를 사원수 $v = xi+yj+zk$ 로. 이걸 크기가 1인 사원수 $q$로 회전시킨 결과는 $qvq^{-1}$야. $qvq^{-1}$이 다시 벡터로 표현이 되는지 의심스러울 수 있는데, 실제로 계산해보면 실수부는 0이 되고 허수부만 나와.

$$ R_q(v) = qvq^{-1} \text{\quad where } \mid q \mid = 1 $$

이식을 풀어쓰면 회전행렬도 구할 수 있겠지.

각속도 - 사원수

이번에는 사원수에서 각속도의 개념을 유도해보자.

어떤 벡터 $r_0(t)$$q(t)$로 회전시키는 상황을 생각해보자. 물론 여기서 $q(t) = 1 $고 그러니까 $q^{-1} = \overline{q}$ 야.

$$ r(t) = q(t) r_0(t) \overline{q}(t)$$

$r(t)$를 미분하면 어떻게 될까. 곱의 미분을 이용하면

$$ \begin{array}{rl} \dot r & = \dot q r_0 \overline{q} + q \dot r_0 \overline{q} + q r_0 \dot{\overline{q}} \\ & = q \dot r_0 \overline{q} + q \overline{q} \dot q r_0 \overline{q} + q r_0 \dot{\overline{q}} q \overline{q} \\ & = q (\dot r_0 + \overline{q} \dot q r_0 + r_0 \dot{\overline{q}} q) \overline{q} \end{array} $$

잘 관찰해보면 $\overline{q} \dot q$$\dot{\overline{q}} q$가 켤레관계야. $\omega = 2 \overline{q} \dot{q}$ 라고 정의하자. 그럼 재밌게도 $\omega$의 실수부가 0이 돼. 왜냐면

$$ \overline{q}q = 1 $$

의 양변을 미분하면

$$ \dot{\overline{q}}{q} + \overline{q}\dot{q} = \overline{\overline{q}\dot{q}} + \overline{q}\dot{q} = \frac{1}{2} (\overline{\omega} + \omega) = 0 $$

이라서 $\omega$ 는 허수부만 있는 벡터야. 이제 $\dot r$를 아래처럼 쓸 수 있어.

$$ \begin{array}{rl} \dot r & = q (\dot r_0 + \frac{1}{2} \omega r_0 + r_0 (-\frac{1}{2}\omega)) \overline{q} \\ & = q (\dot r_0 + \omega \times r_0) \overline{q} \end{array} $$

$\omega$$r_0$는 둘다 벡터니까 외적이 잘 정의돼. 마지막 등호 계산은 appendix에 나와있는 방법으로 사원수 곱을 벡터 내적, 외적으로 계산하면 알 수 있어. 아무튼 우리가 얻은 식을 보면 아까 회전행렬로 얻은 결과와 정확히 같지.

$$ \frac{d}{dt} r = q (\frac{d}{dt} r_0 + \omega \times r_0) \overline{q} $$

그리고 각속도에 대한 재밌는 사실을 알 수 있는데, 우리는

$$\omega = 2 \overline{q} \dot{q}$$

라고 정의했단 말이지? 이건 보면 $\dot{q}$와 관련있긴 하지만, 그 자체로 어떤 물리량을 미분한건 아니야. 사실 2차원 각속도는 각도를 미분한건데, 3차원 각속도는 2차원 각속도의 각도에 대응하는 물리량이 존재하지 않아. 나이브하게 각속도의 각 성분을 시간으로 적분하면 아무 의미가 없는 물리량이 나오고.

가속도

내친김에 가속도도 계산해보자. 아까의 공식

$$ \dot r = q (\dot r_0 + \omega \times r_0) \overline{q} $$

를 그대로 한번 더 적용하면

$$ \begin{array}{rl} \ddot r & = q (\frac{d}{dt} (\dot r_0 + \omega \times r_0) + \omega \times (\dot r_0 + \omega \times r_0)) \overline{q} \\ & = q ( \ddot r_0 + \dot \omega \times r_0 + \omega \times \dot r_0 + \omega \times \dot r_0 + \omega \times (\omega \times r_0)) ) \overline{q} \\ & = q ( \ddot r_0 + \dot \omega \times r_0 + 2 \omega \times \dot r_0 + \omega \times (\omega \times r_0)) ) \overline{q} \end{array} $$

여기서 $\dot \omega \times r_0$는 횡가속도, $2 \omega \times \dot r_0$는 코리올리 가속도, $\omega \times (\omega \times r_0))$는 구심가속도라고 다 이름있는 항들이야.

Appendix. 사원수 계산

사원수 곱을 내적과 외적으로 표현할 수도 있어. a와 b는 실수, u와 v는 실수부가 0인 사원수일 때

$$ (a+u)(b+v) = ab + av + bv + uv = (ab - u \cdot v) + (av + bv + u \times v) $$

곱에 켤레를 취하면 순서가 바뀌어.

$$ \overline{q_1 q_2} = \overline{q_2} \ \overline{q_1}$$

곱의 미분 공식은 사원수에서도 똑같아. 또 켤레와 미분은 순서를 바꿀 수 있어.

$$\frac{d}{dt} (q_1(t) q_2(t)) = \dot q_1(t) q_2(t) + q_1(t) \dot q_2(t) $$

$$ \dot{\overline{q}} = \overline{\dot{q}} $$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment