2020년 9월 18일 금요일

사원수와 회전(Quaternion and Rotation)

[경고] 아래 글을 읽지 않고 "사원수와 회전"을 보면 바보로 느껴질 수 있습니다.


사원수(四元數, quaternion)는 물리학에 벡터(vector)란 개념을 선물해준 고마운 존재이다. 사원수가 아름답기 때문에 그동안 수많은 찬사를 받았지만, 사원수는 치명적인 약점이 존재한다. 우리 직관을 너무 벗어난 사원수의 대수적 특성은 사실 멀리하고 싶은 그리움이다. 우리만 이런 딜레마를 느낄까? 당연히 아니다. 사원수가 널리 퍼진 19세기말부터 대수 기반의 사원수가 아닌 직관적인 벡터 개념을 만들기 위한 경쟁이 시작되었다. 사원수에 벡터가 이미 포함되어 있었지만, 완벽한 사원수 대수를 버리고 어딘지 부실하게 벡터만 강조한 벡터 해석학(vector analysis)이 1881년기브스 42세, 조선 고종 시절에 출현했다[1], [2]. 벡터 해석학은 미국 최초의 공학 박사이자 예일대학교(Yale University) 교수인 기브스Josiah Willard Gibbs(1839–1903)가 만들었다. 사원수라는 엄밀한 수학 체계를 어려워하는 예일대 학생들을 위해 벡터 개념을 간단히 사용할 수 있도록 기브스 교수는 좌표계 기반 벡터에 대한 자체 교재를 만들어서 학생들을 가르쳤다. 좌표계 기반 벡터 교재는 영국에 있는 헤비사이드Oliver Heaviside(1850–1925)에게 1888년 무렵에 전달되었다. 깐깐한 헤비사이드가 기브스의 벡터 개념을 칭찬했지만, 헤비사이드는 이미 1884년헤비사이드 34세, 조선 고종 시절에 기브스와는 독립적으로 사원수로 기술된 맥스웰 방정식(Maxwell's equations)을 자신만의 벡터 기반 맥스웰 방정식으로 간략화했다. 그뒤 기브스는 너무 바빠서 새로운 벡터 개념을 다듬을 시간이 없었지만, 기브스의 제자인 윌슨이 벡터 해석학[3]이란 멋진 책을 써서 1901년에 출판했다. 이 교재로 인해 사원수라는 개념은 물리학자의 손을 떠나 원래 있어야 할 수학자에게 돌아갔다. 요즘 물리학자는 기브스와 헤비사이드가 제안한 좌표계 기반 벡터를 사용해서 사물의 움직임을 계산한다.

[그림 1] 회전축 $\hat e$에 대한 3차원 공간의 회전(출처: wikipedia.org)

[그림 2] 공간 회전의 사원수 표현식을 위한 3차원 좌표계(출처: wikipedia.org)

사원수는 수학자가 발견한 교환 법칙이 성립하지 않는 최초의 대수 체계라서 존재 가치가 분명히 있다. 하지만 사원수와 경쟁하는 벡터 개념이 너무 직관적이라서 사원수는 다수의 사랑을 다시 받기는 어렵다. 그럼에도 불구하고 3차원 회전 연산(rotation operation)만 보면, 사원수의 회전 표현식이 벡터나 행렬 공식보다 확실히 아름답다.

[3차원 공간 회전을 위한 사원수 표현식]
단위 벡터 $\hat k$를 회전축으로 놓고, 3차원 벡터 $\bar v$를 $\theta$만큼 회전시킨 벡터 $\bar v_\text{rot}$는 다음처럼 표현된다.

                  (1)

여기서 단위 벡터(unit vector)는 스칼라가 $0$인 단위 사원수(unit quaternion)이다.

[증명]
사원수 표현식을 증명하기 위한 사원수의 벡터 항등식은 다음과 같다.

                              (2)

                              (3)

회전을 표현하기 위해 사용한 사원수 $\bf q$의 크기는 $\theta$에 관계없이 항상 $1$이다.

                              (4)

그래서 식 (1)처럼 ${\bf q}^{-1}$ = ${\bf q}^*$이 성립한다. 벡터 $\bar v_\text{rot}$의 크기도 $|{\bf q} \bar v{\bf q}^*|$ = $|{\bf q}| |\bar v| |{\bf q}^*|$ = $|\bar v|$처럼 보존된다. 사원수 $\bf q$를 식 (1)에 대입한 후, 식 (2)와 (3)을 이용해 정리한다.

                              (5)

여기서 삼각 함수의 합차 공식에 의해 $\cos^2 (\theta/2) - \sin^2 (\theta/2)$ = $\cos \theta$, $2 \sin^2 (\theta/2)$ = $1 - \cos \theta$이다. 식 (5)는 로드리그의 회전 공식(Rodrigues' rotation formula)과 동일하므로, 3차원 공간의 회전 표현식이 증명된다.
______________________________

공간 회전에 대한 사원수 표현식을 증명할 때, 로드리그의 회전 공식과 비교한 부분이 약간 어색해 보일 수 있다. 하지만 역사적으로 보면, 로드리그의 회전 공식이 나온 직후에 사원수가 제안되었으므로 우리의 접근 방식은 타당하다. 

[참고문헌]
[1] M. J. Crowe, "A history of vector analysis," University of Louisville, 2002. (방문일 2020-09-18)
[2] E. B. Wilson, "Reminiscences of Gibbs by a student and colleague," Bull. Amer. Math. Soc., vol. 37, no. 6, pp. 401–416, 1931.

댓글 12개 :

  1. 궁금한게 있습니다... (5)에서 마지막 전에 -sin^2(θ/2)[v-2(k·v)k] 에서 [v - 2(k·v)k] 가 어떻게 (k·v)k 로 전개됬는지 잘 모르겠습니다... 그리고 기초적인 질문인데; cos^2와 sin^2이 cos과 +(1-cos)이 된 이유가 궁금합니다. 저는 -(1-cos)을 생각했습니다. 도와주십쇼 선생님ㅜㅜ

    답글삭제
    답글
    1. 그리고 cos^2 sin^2의 제곱이 사라진 이유도 잘 모르겠습니다...ㅜㅜ;;

      삭제
    2. Unknown님, 선생님은 아닙니다.
      식 (5) 밑에 내용을 약간 추가했어요. 삼각 함수 합차 공식을 고려하면 증명됩니다.

      삭제
    3. 정말 감사합니다!! 책을 봐도 다른 인터넷 블로그를 봐도 이만큼 따라갈수있는 글이 없었어요... 복받으십쇼 감사합니다!!!! 공부열심히할게요!!!!!!!!

      삭제
  2. 안녕하세요.
    좋은 글 감사합니다.
    궁금한게 하나 있는데요. 제가 이해를 잘 못한거 같아서요.
    현재 오일러와 쿼터니언을 공부하고 있습니다.
    하고 싶은건 오일러의 짐벌락 현상때문에 쿼터니언으로의 회전을 구현하고 싶은데요.
    결과적으로 v의 회전벡터를 구하는건 qvq(*) 인데 여기서 q는 단위사원수이며
    v 는 실수부가 0인 순수사원수로 알고 있습니다.
    그런데 오일러3각 (roll, pitch, yaw)가 주어졌을때 쿼터니언에 어떻게 적용하는지를 모르겠습니다.
    위의 말처럼 q에 세타를 집어넣어 q의 켤레를 구해(허수부의 부호만 바꿔서) qvq(*)를 계산하면 되는데
    이때 세타값이 회전한양이라고 알고있습니다.
    그렇다면 roll, pitch, yaw 랑 어떻게 매칭을 시켜야 할까요?
    만약 x축 30, y축 60, z축 50의 회전이 들어갔으면 세타에 어떤값이 들어가야 하는지 모르겠습니다...

    처음이라 이해를 못해 글이 지저분 합니다.
    이해해주시면 감사하겠습니다.

    답글삭제
    답글
    1. 각 회전에 대해서 식 (1)을 연속적으로 적용하면 됩니다. 위에 드신 예처럼 하고 싶으면, x축으로 30도 먼저 돌리고, 그 후에 y축으로 60도를 돌리세요. x축으로 30도 돌리려면, ${\bf q} = \cos(\pi/12) + i \sin(\pi/12)$로 선택해서 식 (1)에 넣습니다. y축에 대한 60도 회전은 ${\bf q} = \cos(\pi/6) + j \sin(\pi/6)$를 적용합니다.

      삭제
  3. 궁금한 점이 있는데 사원수가 3차원 공간의 회전을 짐벌락 같은 문제 없이 완벽히 표현할수 있는 것처럼 사원수는 4차원 공간도 짐벌락 같은 문제 없이 완벽히 표현할수 있나요?

    답글삭제
    답글
    1. 원칙적으로 사원수는 3차원 공간을 표현합니다. 그래서 4차원에 쓰이기는 어렵습니다.

      다만 4차원 상의 회전을 특정 평면(예를 들어, $x_1, x_2$)에 대한 나머지 두 차원($x_3, x_4$)에서의 회전으로 정의하면, 좌표축 하나를 고정(예를 들어, $x_1 = a$)할 수 있어서 4차원을 3차원($x_2, x_3, x_4$를 사용)으로 바꿀 수 있어요. 그러면 이 3차원은 4차원의 부분 공간이므로, 사원수로 회전시킬 수 있어요.

      말씀하신 대로 사원수는 역삼각 함수를 쓰지 않고 대수적 계산만 해서 짐벌 잠금(gimbal lock)이 생기지 않아요. 아래 링크도 한 번 보세요.

      https://ghebook.blogspot.com/2023/02/euler-angle.html

      삭제
    2. 답변 감사합니다. 사원수도 짐벌락 같은 문제 없이 4차원 공간을 완벽히 표현할수 있다는 애기군요. 사원수를 4차원으로 쓰기 어렵다고 하셨는데, 그렇다면 다른 방법을 통해서 4차원 회전을 구할수 있는 방법이 있는건가요?

      삭제
    3. 4차원의 회전부터 정확히 정의하셔야 합니다. 축 하나를 고정하고 다른 세 개 차원을 돌리는지, 아니면 위 댓글의 설명처럼 축이 두 개 고정되어 기존 3차원 회전처럼 계산하는지가 중요합니다.
      선택한 정의에 따라 $4 \times 4$ 행렬로 처리하면, 이게 바로 원하시는 회전 행렬(rotation matrix)이 됩니다.

      삭제

욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.