사원수 (Quaternion)

수학
한 줄 정의: 사원수는 복소수를 확장하여 하나의 실수 성분과 세 개의 허수 성분(i, j, k)으로 이루어진 수 체계로, 3차원 공간에서의 회전을 표현할 때 주로 사용됩니다.

쉽게 풀면

복소수는 실수 하나에 허수 i 하나를 붙여 평면 위의 회전과 점을 표현할 수 있게 해준 수였습니다. 사원수는 여기서 한 걸음 더 나아가, 서로 다른 방향을 가리키는 허수 단위 i, j, k를 세 개나 추가로 도입해서 "실수 1개 + 허수 3개"로 이루어진 수를 만든 것입니다. 이렇게 만들면 3차원 공간에서 물체를 어느 축으로 얼마나 돌렸는지를 네 개의 숫자만으로 깔끔하게 표현할 수 있습니다. 비유하자면, 종이 위(2차원)에서 도형을 돌릴 때는 각도 하나만 알면 되지만, 입체(3차원) 물체를 돌릴 때는 "어느 축을 중심으로, 얼마나" 돌렸는지를 함께 담아야 하는데, 사원수가 바로 이 정보를 오차 없이 압축해서 담아내는 그릇 역할을 합니다.

왜 중요한가

3차원 회전을 다루는 문제는 로보틱스, 컴퓨터 그래픽스, 항공우주공학, 컴퓨터 비전 등 매우 다양한 분야에서 공통적으로 등장하는데, 사원수는 오일러 각이나 회전행렬이 가진 계산상의 약점(짐벌락, 연산 비용) 없이 회전을 안정적이고 효율적으로 표현할 수 있어 실무와 연구 모두에서 표준적인 도구로 자리 잡았습니다. 특히 여러 회전을 이어 붙이거나 부드럽게 보간해야 하는 애니메이션, 자세 제어 알고리즘에서 사원수의 장점이 두드러집니다.

논문에서는 이렇게 쓰입니다

"로봇 팔의 자세 추정 시 오일러 각 대신 사원수를 사용하여 짐벌락(gimbal lock) 문제를 방지하고 회전 보간을 안정적으로 수행하였다."

이 문장은 로봇의 방향(자세)을 계산할 때 일반적인 각도 표현 방식(오일러 각)을 쓰면 특정 상황에서 계산이 꼬이는 문제가 생기는데, 대신 사원수를 사용하면 이런 문제 없이 회전을 훨씬 안정적으로 다룰 수 있었다는 뜻입니다. 로보틱스, 컴퓨터 그래픽스, 항공우주공학 논문에서 3차원 회전과 자세 제어를 다룰 때 자주 등장하는 표현입니다.

"관성측정장치(IMU)로부터 얻은 각속도 데이터를 사원수 기반 상보 필터에 통합하여 드론의 자세를 실시간으로 추정하였다."

드론이나 항공기 자세 추정 연구에서는 센서에서 들어오는 회전 정보를 사원수 형태로 누적·보정함으로써 계산 오차를 줄이고 실시간 처리 속도를 확보한다는 뜻입니다.

"두 키프레임 사이의 카메라 자세 변화는 구면선형보간(SLERP)을 이용해 사원수 공간에서 부드럽게 보간되었다."

컴퓨터 그래픽스나 애니메이션 연구에서는 회전을 사원수로 표현하면 두 자세 사이를 매끄럽게 이어주는 보간 계산이 자연스럽게 가능해진다는 것을 보여줍니다.

조금 더 깊게 보면

사원수를 이용해 회전을 다룰 때는 크기(norm)가 1인 단위 사원수만을 사용하는 것이 일반적인데, 이는 순수하게 방향 정보만을 표현하기 위해서입니다. 두 사원수 사이를 부드럽게 보간하는 기법으로는 구면선형보간(SLERP)이 널리 쓰이며, 이는 단순한 선형보간과 달리 회전 속도가 일정하게 유지되는 자연스러운 궤적을 만들어 줍니다. 또한 사원수 표현은 회전행렬보다 저장 공간이 작고(4개 값 대 9개 값) 수치적으로도 더 안정적이어서, 긴 시간에 걸쳐 회전을 누적 계산해야 하는 항법 및 자세 추정 시스템에서 특히 선호됩니다.

주의할 점

사원수의 곱셈은 순서를 바꾸면 결과가 달라지는 비가환(non-commutative) 연산입니다. 즉 A×B와 B×A가 일반적으로 서로 다른데, 이는 우리에게 익숙한 실수나 복소수의 곱셈과는 다른 성질입니다. 또한 사원수는 3차원 회전을 다룰 때 흔히 쓰이지만, 벡터 자체의 방향과 크기만 다룰 때는 벡터의 외적만으로 충분한 경우도 많으므로 상황에 맞는 도구를 선택해야 합니다.

관련 용어