도구스학업·수학

쿼터니언 오일러각 변환기

쿼터니언과 오일러각, 회전행렬, 축-각 표현을 서로 변환합니다. 회전 순서를 여섯 가지 중에서 고를 수 있고, 짐벌락 구간을 자동으로 알려 줍니다.

회전 순서

ZYX (요-피치-롤) — 항공·드론·로보틱스의 기본. 요→피치→롤 순

°
°

이 각이 ±90°가 되면 짐벌락입니다

°

쿼터니언 (w, x, y, z)

0.951549, 0.038135, 0.189308, 0.239298

w를 0 이상으로 맞춘 정규형입니다. 부호를 통째로 뒤집어도 같은 회전입니다

오일러각 ZYX30° · 20° · 10°
쿼터니언 (w, x, y, z)0.951549, 0.038135, 0.189308, 0.239298
회전축(0.12402, 0.61564, 0.77821)
회전각35.8171°

회전행렬

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번째
ZYX30°20°10°
XYZ-1.116°22.242°28.452°
YXZ22.246°-1.033°28.029°
ZXY26.549°9.391°20.284°
XZY10.475°26.166°24.945°
YZX22.796°28.024°-1.17°

전부 똑같은 자세인데 숫자가 다릅니다. 다른 소프트웨어로 값을 옮길 때 그쪽이 어떤 순서를 쓰는지 확인해야 하는 이유입니다.

회전 순서를 모르면 오일러각은 자세를 정하지 못합니다. 3차원 회전은 교환법칙이 성립하지 않아 순서가 다르면 결과가 달라집니다. 이 계산기는 R = R₁(1번째)·R₂(2번째)·R₃(3번째)로 정의하며, 회전한 축을 따라 차례로 도는 내재 회전(intrinsic)입니다. 항공·로보틱스에서 쓰는 ZYX는 요·피치·롤 순서입니다.
q와 −q는 같은 회전입니다. 쿼터니언은 회전을 두 겹으로 덮기 때문에, 네 성분의 부호를 통째로 뒤집어도 회전행렬이 완전히 같습니다. 그래서 두 쿼터니언이 같은 자세인지 비교할 때는 부호를 맞춘 뒤에 봐야 하고, 보간(slerp)할 때도 내적이 음수면 한쪽을 뒤집고 시작해야 먼 길로 돌아가지 않습니다. 이 계산기는 w가 0 이상이 되도록 맞춰 보여 줍니다.
짐벌락은 쿼터니언에는 없습니다. 2번째 각이 ±90°일 때 오일러각의 표현이 무너지는 것이지 회전 자체에는 아무 문제가 없습니다. 드론이나 로봇의 자세를 오일러각으로 들고 다니면 이 지점에서 제어가 튀므로, 내부 표현은 쿼터니언이나 회전행렬로 두고 사람에게 보여 줄 때만 오일러각으로 바꾸는 것이 정석입니다.
축이 반복되는 고유 오일러각(ZXZ·XYX 등 여섯 가지)은 다루지 않고, 축이 모두 다른 테이트-브라이언 각 여섯 가지만 지원합니다. 또 벡터를 돌리는 능동 회전(active)을 전제한 값으로 추정됩니다— 좌표계를 돌리는 수동 회전으로 읽으면 부호가 반대가 됩니다.

계산 방법

  1. 1오일러각과 쿼터니언 중 무엇을 넣을지 고릅니다.
  2. 2회전 순서를 고릅니다. 항공·드론은 ZYX(요-피치-롤)가 기본입니다.
  3. 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일 · 결과는 참고용 추정치입니다.