GameDevelop/Notes

쿼터니언(Quaternion) vs 오일러 각(Euler Angle)

Une_ 2026. 1. 1. 17:35

 

쿼터니언과 오일러 각도를 정리해보았습니다.

구글링 및 ChatGPT의 도움을 받아 작성했습니다.

 

1. 오일러 각 (Euler Angle)

1.1 정의

오일러 각은 물체의 회전을 세 개의 축 회전 값으로 표현하는 방식이다.

  • Pitch (X축 회전)
  • Yaw (Y축 회전)
  • Roll (Z축 회전)

보통 (Pitch, Yaw, Roll) 또는 (X, Y, Z) 형태로 저장된다.

 

1.2 장점

  • 사람이 이해하기 쉽다
  • 디버깅이 직관적이다
  • UI 입력(슬라이더, 각도 입력)에 적합하다

👉 그래서 에디터 상의 회전 값은 대부분 오일러 각이다.

 

1.3 치명적인 문제: 짐벌 락 (Gimbal Lock)

짐벌 락이란?

세 축 중 두 축이 겹쳐져 자유도가 하나 사라지는 현상이다.

예를 들어:

  • Pitch가 ±90°에 가까워질 경우
  • Yaw와 Roll 축이 같은 축처럼 동작

👉 결과적으로 의도하지 않은 회전이 발생한다.

 

2. 쿼터니언 (Quaternion)

2.1 정의

쿼터니언은 회전을 축(axis) + 각도(angle) 개념으로 표현하는 4차원 벡터다.

형태:

(x, y, z, w)
  • (x, y, z): 회전 축 정보
  • w: 회전 각도 정보 (cos(θ/2))

2.2 왜 4차원인가?

  • 3차원 회전을 중복 없이 표현하기 위함
  • 회전을 하나의 연산 단위로 다루기 위함

👉 중요한 점은:

“4차원 공간에서 회전한다”가 아니라 “3차원 회전을 4개의 값으로 표현한다”는 것이다.

2.3 쿼터니언의 장점

1) 짐벌 락이 발생하지 않는다

  • 축을 순차적으로 회전하지 않음
  • 회전을 하나의 상태로 표현

2) 회전 보간이 부드럽다

  • Slerp (Spherical Linear Interpolation)
  • 일정한 각속도 유지

3) 수치적으로 안정적이다

  • 누적 회전 오류가 적음
  • 정규화로 오차 관리 가능

5. 한 문장으로 정리

오일러 각은 직관적이지만 짐벌 락 문제가 있고, 쿼터니언은 이를 해결하여 안정적인 회전과 보간을 가능하게 합니다. 그래서 게임 엔진에서는 입력은 오일러, 내부 연산은 쿼터니언을 사용합니다.

 

'GameDevelop > Notes' 카테고리의 다른 글

해시테이블과 해시충돌  (0) 2026.01.09
A* 알고리즘  (0) 2026.01.05
l-value와 r-value  (0) 2026.01.01
벡터의 내적과 외적  (0) 2026.01.01
RAII - Resource acquisition is initialization  (0) 2024.09.10