사원수 (Quaternion)
쉽게 풀면
복소수는 실수 하나에 허수 i 하나를 붙여 평면 위의 회전과 점을 표현할 수 있게 해준 수였습니다. 사원수는 여기서 한 걸음 더 나아가, 서로 다른 방향을 가리키는 허수 단위 i, j, k를 세 개나 추가로 도입해서 "실수 1개 + 허수 3개"로 이루어진 수를 만든 것입니다. 이렇게 만들면 3차원 공간에서 물체를 어느 축으로 얼마나 돌렸는지를 네 개의 숫자만으로 깔끔하게 표현할 수 있습니다. 비유하자면, 종이 위(2차원)에서 도형을 돌릴 때는 각도 하나만 알면 되지만, 입체(3차원) 물체를 돌릴 때는 "어느 축을 중심으로, 얼마나" 돌렸는지를 함께 담아야 하는데, 사원수가 바로 이 정보를 오차 없이 압축해서 담아내는 그릇 역할을 합니다.
왜 중요한가
3차원 회전을 다루는 문제는 로보틱스, 컴퓨터 그래픽스, 항공우주공학, 컴퓨터 비전 등 매우 다양한 분야에서 공통적으로 등장하는데, 사원수는 오일러 각이나 회전행렬이 가진 계산상의 약점(짐벌락, 연산 비용) 없이 회전을 안정적이고 효율적으로 표현할 수 있어 실무와 연구 모두에서 표준적인 도구로 자리 잡았습니다. 특히 여러 회전을 이어 붙이거나 부드럽게 보간해야 하는 애니메이션, 자세 제어 알고리즘에서 사원수의 장점이 두드러집니다.
논문에서는 이렇게 쓰입니다
이 문장은 로봇의 방향(자세)을 계산할 때 일반적인 각도 표현 방식(오일러 각)을 쓰면 특정 상황에서 계산이 꼬이는 문제가 생기는데, 대신 사원수를 사용하면 이런 문제 없이 회전을 훨씬 안정적으로 다룰 수 있었다는 뜻입니다. 로보틱스, 컴퓨터 그래픽스, 항공우주공학 논문에서 3차원 회전과 자세 제어를 다룰 때 자주 등장하는 표현입니다.
드론이나 항공기 자세 추정 연구에서는 센서에서 들어오는 회전 정보를 사원수 형태로 누적·보정함으로써 계산 오차를 줄이고 실시간 처리 속도를 확보한다는 뜻입니다.
컴퓨터 그래픽스나 애니메이션 연구에서는 회전을 사원수로 표현하면 두 자세 사이를 매끄럽게 이어주는 보간 계산이 자연스럽게 가능해진다는 것을 보여줍니다.
조금 더 깊게 보면
사원수를 이용해 회전을 다룰 때는 크기(norm)가 1인 단위 사원수만을 사용하는 것이 일반적인데, 이는 순수하게 방향 정보만을 표현하기 위해서입니다. 두 사원수 사이를 부드럽게 보간하는 기법으로는 구면선형보간(SLERP)이 널리 쓰이며, 이는 단순한 선형보간과 달리 회전 속도가 일정하게 유지되는 자연스러운 궤적을 만들어 줍니다. 또한 사원수 표현은 회전행렬보다 저장 공간이 작고(4개 값 대 9개 값) 수치적으로도 더 안정적이어서, 긴 시간에 걸쳐 회전을 누적 계산해야 하는 항법 및 자세 추정 시스템에서 특히 선호됩니다.
주의할 점
사원수의 곱셈은 순서를 바꾸면 결과가 달라지는 비가환(non-commutative) 연산입니다. 즉 A×B와 B×A가 일반적으로 서로 다른데, 이는 우리에게 익숙한 실수나 복소수의 곱셈과는 다른 성질입니다. 또한 사원수는 3차원 회전을 다룰 때 흔히 쓰이지만, 벡터 자체의 방향과 크기만 다룰 때는 벡터의 외적만으로 충분한 경우도 많으므로 상황에 맞는 도구를 선택해야 합니다.