쿼터니언 오일러각 변환기
쿼터니언과 오일러각, 회전행렬, 축-각 표현을 서로 변환합니다. 회전 순서를 여섯 가지 중에서 고를 수 있고, 짐벌락 구간을 자동으로 알려 줍니다.
회전 순서
ZYX (요-피치-롤) — 항공·드론·로보틱스의 기본. 요→피치→롤 순
이 각이 ±90°가 되면 짐벌락입니다
쿼터니언 (w, x, y, z)
0.951549, 0.038135, 0.189308, 0.239298
w를 0 이상으로 맞춘 정규형입니다. 부호를 통째로 뒤집어도 같은 회전입니다
회전행렬
| 0.813798 | -0.44097 | 0.378522 |
| 0.469846 | 0.882564 | 0.018028 |
| -0.34202 | 0.163176 | 0.925417 |
열벡터 규약입니다. 벡터 v를 회전시키려면 R·v로 곱하고, 첫 번째 열이 X축이 옮겨간 방향입니다.
같은 회전을 다른 순서로 읽으면
| 순서 | 1번째 | 2번째 | 3번째 |
|---|---|---|---|
| ZYX | 30° | 20° | 10° |
| XYZ | -1.116° | 22.242° | 28.452° |
| YXZ | 22.246° | -1.033° | 28.029° |
| ZXY | 26.549° | 9.391° | 20.284° |
| XZY | 10.475° | 26.166° | 24.945° |
| YZX | 22.796° | 28.024° | -1.17° |
전부 똑같은 자세인데 숫자가 다릅니다. 다른 소프트웨어로 값을 옮길 때 그쪽이 어떤 순서를 쓰는지 확인해야 하는 이유입니다.
계산 방법
- 1오일러각과 쿼터니언 중 무엇을 넣을지 고릅니다.
- 2회전 순서를 고릅니다. 항공·드론은 ZYX(요-피치-롤)가 기본입니다.
- 3값을 넣으면 나머지 표현이 모두 나옵니다. 아래 표에서 같은 회전이 다른 순서로는 어떤 각도가 되는지 볼 수 있습니다.
자주 묻는 질문
각 축의 회전을 쿼터니언으로 만들어 순서대로 곱합니다. ZYX라면 q = q_Z(요) ⊗ q_Y(피치) ⊗ q_X(롤)입니다. 한 축을 θ만큼 도는 쿼터니언은 w = cos(θ/2), 그 축 성분 = sin(θ/2)이고 나머지는 0입니다. 반대로 쿼터니언에서 오일러각을 뽑을 때는 회전행렬을 거쳐 역삼각함수로 풉니다.
순서가 다르면 다른 자세가 되기 때문입니다. 3차원 회전은 교환법칙이 성립하지 않아, 같은 각도라도 ZYX로 읽을 때와 XYZ로 읽을 때 결과가 다릅니다. 그래서 "요 30도, 피치 20도, 롤 10도"라는 말만으로는 자세가 정해지지 않습니다. 다른 소프트웨어의 값을 옮길 때는 그쪽이 어떤 순서를 쓰는지 반드시 확인해야 합니다.
두 번째 각이 ±90°가 되어 첫 축과 마지막 축이 같은 방향을 가리키면서, 두 각을 따로 구할 수 없게 되는 현상입니다. 이때는 두 각의 합(또는 차)만 정해지고 무한히 많은 조합이 같은 자세를 만듭니다. 오일러각이라는 표현이 값을 잃는 것이지 회전 자체에는 문제가 없으며, 쿼터니언과 회전행렬에는 짐벌락이 없습니다.
짐벌락이 없고, 값이 네 개뿐이며, 곱셈으로 회전을 이어 붙이기 쉽기 때문입니다. 오일러각으로 자세를 들고 다니면 피치 ±90° 부근에서 각도가 튀어 제어가 불안정해지고, 회전행렬은 값이 아홉 개라 누적 오차로 직교성이 깨집니다. 드론과 게임 엔진이 내부적으로 쿼터니언을 쓰고 사람에게 보여 줄 때만 오일러각으로 바꾸는 이유입니다.
같은 회전입니다. 쿼터니언은 회전을 두 겹으로 덮기 때문에 네 성분의 부호를 통째로 뒤집어도 회전행렬이 완전히 같습니다. 그래서 두 쿼터니언을 비교할 때는 부호를 맞춘 뒤에 봐야 하고, 구면 보간(slerp)에서도 내적이 음수면 한쪽을 뒤집고 시작해야 먼 길로 돌아가지 않습니다.
어떤 축을 중심으로 몇 도 돌렸는지로 회전을 나타내는 방식입니다. 오일러 회전정리에 따라 어떤 3차원 회전도 축 하나와 각도 하나로 표현할 수 있습니다. 쿼터니언에서 바로 뽑을 수 있는데, 회전각은 2·acos(w)이고 회전축은 (x, y, z)를 그 크기로 나눈 단위벡터입니다. 회전이 0에 가까우면 축이 정해지지 않습니다.
알아두면 좋은 점
- 벡터를 돌리는 능동 회전(active)과 열벡터 규약을 전제한 값으로 추정됩니다. 좌표계를 돌리는 수동 회전으로 읽으면 부호가 반대가 됩니다.
- 축이 모두 다른 테이트-브라이언 각 여섯 가지만 지원합니다. 축이 반복되는 고유 오일러각(ZXZ 등)은 다루지 않습니다.
- 내재 회전(회전한 축을 따라 도는 방식)을 기준으로 합니다. 고정 축을 기준으로 하는 외재 회전은 순서를 뒤집어 읽으면 같은 결과가 됩니다.
함께 보면 좋은 도구
마지막 검증: 2026년 8월 31일 · 결과는 참고용 추정치입니다.