컴퓨터 그래픽스에서 4x4 행렬은 3D 변환(translation, rotation, scaling 등)을 표현하기 위한 중요한 수학적 도구입니다. 이 행렬의 구조는 일반적으로 **동차 좌표(homogeneous coordinates)**를 사용하는 3D 그래픽스에서 사용됩니다. 다음은 4x4 행렬의 구조와 각 요소의 역할에 대한 설명입니다:


4x4 행렬의 기본 구조

M=[m11m12m13m14m21m22m23m24m31m32m33m34m41m42m43m44]\mathbf{M} = \begin{bmatrix} m_{11} & m_{12} & m_{13} & m_{14} \\ m_{21} & m_{22} & m_{23} & m_{24} \\ m_{31} & m_{32} & m_{33} & m_{34} \\ m_{41} & m_{42} & m_{43} & m_{44} \end{bmatrix}

  • 각 요소는 3D 공간의 변환을 정의하는 역할을 합니다.
  • 일반적으로 좌측 상단 3x3 부분은 **회전(rotation)**과 **스케일링(scaling)**을 담당하고, 마지막 열(translation vector)은 **이동(translation)**을 담당합니다.



각 부분의 역할

  1. 회전 및 스케일링 (3x3 부분)
    좌측 상단의 3×33 \times 3 부분 행렬은 객체의 회전 및 크기 조정을 담당합니다:[m11m12m13m21m22m23m31m32m33]\begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \end{bmatrix}
    • 이 부분은 단위 행렬(identity matrix)이면 변환 없이 유지됩니다.
    • 각 요소는 회전 축과 스케일링 계수를 정의합니다.


  2. 이동 (Translation vector)
    네 번째 열(m14,m24,m34m_{14}, m_{24}, m_{34})은 위치 이동(translation)을 정의합니다:[m14m24m34]\begin{bmatrix} m_{14} \\ m_{24} \\ m_{34} \end{bmatrix}
    • 예를 들어, xx, yy, zz 방향으로 이동하려면 이 값들을 해당 값으로 설정합니다.
  3. 투영 (Projection)
    마지막 행 (m41,m42,m43,m44m_{41}, m_{42}, m_{43}, m_{44})은 일반적으로 투영 변환에 사용됩니다.
    • 3D 공간을 2D 화면에 투영할 때 원근감을 표현하는 역할을 합니다.
    • 일반적인 경우, m41=m42=m43=0m_{41} = m_{42} = m_{43} = 0, m44=1m_{44} = 1로 설정됩니다(비투영 변환 시).




주요 변환 예시

  1. 이동 (Translation):T=[100tx010ty001tz0001]\mathbf{T} = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}
    • tx,ty,tzt_x, t_y, t_z는 각각 xx, yy, zz 방향으로의 이동 거리.
  2. 회전 (Rotation):
    • zz-축 회전: Rz=[cos⁡θ−sin⁡θ00sin⁡θcos⁡θ0000100001]\mathbf{R_z} = \begin{bmatrix} \cos\theta & -\sin\theta & 0 & 0 \\ \sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}
  3. 스케일링 (Scaling):S=[sx0000sy0000sz00001]\mathbf{S} = \begin{bmatrix} s_x & 0 & 0 & 0 \\ 0 & s_y & 0 & 0 \\ 0 & 0 & s_z & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}
    • sx,sy,szs_x, s_y, s_z는 각각 xx, yy, zz 방향의 스케일 팩터.
  4. 투영 (Projection):
    • 원근 투영 행렬은 m41,m42,m43m_{41}, m_{42}, m_{43} 값을 설정하여 원근 효과를 적용합니다.



동차 좌표(homogeneous coordinates)의 역할

3D 점 (x,y,z)(x, y, z)를 동차 좌표계에서는 (x,y,z,1)(x, y, z, 1)로 확장합니다.
이렇게 하면 행렬 계산으로 이동, 회전, 스케일링을 하나의 연산으로 통합할 수 있습니다.

활용

  • 3D 그래픽스 엔진(OpenGL, DirectX 등)은 4x4 행렬을 사용해 변환을 수행합니다.
  • 여러 변환을 하나의 행렬로 병합하여 효율적으로 계산할 수 있습니다.

+ Recent posts