[컴퓨터그래픽스] Homogeneous Coordinates (동차 좌표계)

Serun1017·2024년 10월 23일
0

컴퓨터그래픽스

목록 보기
26/31

Homogeneous Coordinates (동차 좌표계)

Homogeneous Coordinates (동차 좌표계)는 컴퓨터 그래픽스에서 3D 변환을 간편하게 표현하고 계산할 수 있는 좌표계이다. 이 좌표계는 일반적인 유클리드 좌표계(Euclidean Coordinates)를 확장하여, 이동(translation) 을 포함한 다양한 변환을 단일 행렬 연산으로 처리할 수 있게 한다.

일반적으로 2D나 3D 공간에서의 좌표는 다음과 같은 형태이다.

  • 2D Euclidean Coordinates: (x,y)(x, y)
  • 3D Euclidean Coordinates: (x,y,z)(x, y, z)

동차 좌표계에서는 이 점을 확장하여 다음과 같이 정의한다.

  • 2D Homogeneous Coordinates: (x,y,w)(x, y, w)
  • 3D Homogeneous Coordinates: (x,y,z,w)(x, y, z, w)

동차 좌표로의 변환

유클리드 좌표를 동차 좌표로 변환하려면, 해당 좌표에 하나의 차원을 추가한다. 일반적으로 w=1w=1 로 설정한다.

  • 2D 좌표 (x,y)(x, y)를 동차 좌표로 변환
    (x,y)(x,y,w=1)(x, y) \rightarrow (x, y, w=1)
  • 3D 좌표 (x,y,z)(x, y, z)를 동차 좌표로 변환
    (x,y,z)(x,y,z,w=1)(x, y, z) \rightarrow (x, y, z, w=1)

동차 좌표로 표현된 점을 다시 유클리드 좌표로 변환하려면 마지막 요소인 ww로 나누어주면 된다.

  • 동차 좌표 (x,y,z,w)(x, y, z, w) 가 주어졌을 때, 유클리드 좌표로의 변환은 다음과 같다.
  • 2D : (x/w,y/w)(x/w, y/w)
  • 3D: (x/w,y/w,z/w)(x/w, y/w, z/w)

이동 변환의 처리

동차 좌표의 중요한 장점은 이동 변환(translation)을 행렬로 표현할 수 있다는 점이다. 유클리드 좌표에서는 회전(rotation)과 스케일링(scalling)을 행렬로 쉽게 표현할 수 있지만, 이동은 일반적으로 행렬로 표현하기 어렵다. 그러나 동차 좌표에서는 이동도 행렬 연산으로 처리할 수 있다.

3D 이동 변환의 예

유클리드 좌표에서 이동 변환은 다음과 같다.
(x,y,z)=(x+tx,y+ty,z+tz)(x^\prime, y^\prime, z^\prime) = (x + t_x, \, y + t_y, \, z + t_z)
여기서 tx,ty,tzt_x, t_y, t_z는 이동할 거리이다.

이동을 동차 좌표로 표현하면, 다음과 같은 4x4 행렬로 처리할 수 있다.

[100tx010ty001tz0001]\begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}

이를 적용하면 동차 좌표계에서 점 (x,y,z,1)(x, y, z, 1) 은 아래와 같은 행렬 계산으로 이동한다.

[100tx010ty001tz0001][xyz1]=[x+txy+tyz+tz1]\begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = \begin{bmatrix} x + t_x \\ y + t_y \\ z + t_z \\ 1 \end{bmatrix}

장점

  • 이동을 포함한 모든 변환을 행렬로 처리
    동차 좌표는 스케일링, 회전, 이동과 같은 변환을 모두 단일한 행렬 연산으로 처리할 수 있다.
  • 연속적인 변환의 결합
    여러 개의 변환(스케일링, 회전, 이동)을 연속적으로 적용할 때, 변환 행렬들을 곱하여 하나의 행렬로 결합할 수 있다. 이는 여러 변환을 하나의 행렬로 처리할 수 있게 하여 계산 효율성을 높인다.
  • 투영 변환
    동차 좌표는 원근 투영(perspective projection)과 같은 비선형 변환을 행렬 연산으로 간단히 표현할 수 있게 한다.

0개의 댓글