[DX] 회전 행렬(Rotation matrix)

김진우·2025년 6월 23일

DirectX

목록 보기
3/32
post-thumbnail

2D 회전 행렬

2차원(2D) 회전 행렬은 다음과 같다.
R(θ)=[cosθsinθsinθcosθ]R(θ) = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix}     OR     R(θ)=[cosθsinθsinθcosθ]R(θ) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}

여기서 왼쪽의 행렬식은 반시계 방향으로 θ만큼 회전하고, 오른쪽 행렬식은 시계 방향을 θ만큼 회전한다.

예시

점 (1,0)을 시계방향으로 90도 회전

  • θ = 90° (또는 π/2 rad)
  • cos(90°) = 0, sin(90°) = 1

[cos(90)sin(90)sin(90)cos(90)]\begin{bmatrix} \cos(90^\circ) & -\sin(90^\circ) \\ \sin(90^\circ) & \cos(90^\circ) \end{bmatrix} \cdot [10]\begin{bmatrix} 1 \\ 0 \end{bmatrix} = [0110]\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \cdot [10]\begin{bmatrix} 1 \\ 0 \end{bmatrix} = [01]\begin{bmatrix} 0 \\ -1 \end{bmatrix}

즉, (1,0)을 시계방향으로 90도 회전하면(0,-1)이 된다.

방향 판단 기준 (2D)

왼손 좌표계
𝜃 > 0 → 반시계 방향
𝜃 < 0 → 시계 방향

오른손 좌표계
𝜃 < 0 → 반시계 방향
𝜃 > 0 → 시계 방향

3D 회전 행렬

왼손 좌표계 3차원(3D) 회전 행렬은 다음과 같다.
▶ X축 회전 (Pitch)
         Rx(θ)=[1000cosθsinθ0sinθcosθ]R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & \sin\theta \\ 0 & -\sin\theta & \cos\theta \end{bmatrix}

▶ Y축 회전 (Yaw)
         Ry(θ)=[cosθ0sinθ010sinθ0cosθ]R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & -\sin\theta \\ 0 & 1 & 0 \\ \sin\theta & 0 & \cos\theta \end{bmatrix}

▶ Z축 회전 (Roll)
         Rz(θ)=[cosθsinθ0sinθcosθ0001]R_z(\theta) = \begin{bmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

2D 회전 행렬과 마찬가지로 sin의 부호에 따라 왼손좌표계, 오른손좌표계 기준이 달라진다.

방향 판단 기준 (3D)

회전축방향(θ > 0)회전 행렬 내 sin의 부호
X축Pitch Downsin: +, -sin: -
Y축Turn Rightsin: -, -sin: +
Z축시계 방향sin: +, -sin: -

0개의 댓글