Homogeneous Coordinates (동차 좌표계)
Homogeneous Coordinates (동차 좌표계)는 컴퓨터 그래픽스에서 3D 변환을 간편하게 표현하고 계산할 수 있는 좌표계이다. 이 좌표계는 일반적인 유클리드 좌표계(Euclidean Coordinates)를 확장하여, 이동(translation) 을 포함한 다양한 변환을 단일 행렬 연산으로 처리할 수 있게 한다.
일반적으로 2D나 3D 공간에서의 좌표는 다음과 같은 형태이다.
- 2D Euclidean Coordinates: (x,y)
- 3D Euclidean Coordinates: (x,y,z)
동차 좌표계에서는 이 점을 확장하여 다음과 같이 정의한다.
- 2D Homogeneous Coordinates: (x,y,w)
- 3D Homogeneous Coordinates: (x,y,z,w)
동차 좌표로의 변환
유클리드 좌표를 동차 좌표로 변환하려면, 해당 좌표에 하나의 차원을 추가한다. 일반적으로 w=1 로 설정한다.
- 2D 좌표 (x,y)를 동차 좌표로 변환
(x,y)→(x,y,w=1)
- 3D 좌표 (x,y,z)를 동차 좌표로 변환
(x,y,z)→(x,y,z,w=1)
동차 좌표로 표현된 점을 다시 유클리드 좌표로 변환하려면 마지막 요소인 w로 나누어주면 된다.
- 동차 좌표 (x,y,z,w) 가 주어졌을 때, 유클리드 좌표로의 변환은 다음과 같다.
- 2D : (x/w,y/w)
- 3D: (x/w,y/w,z/w)
이동 변환의 처리
동차 좌표의 중요한 장점은 이동 변환(translation)을 행렬로 표현할 수 있다는 점이다. 유클리드 좌표에서는 회전(rotation)과 스케일링(scalling)을 행렬로 쉽게 표현할 수 있지만, 이동은 일반적으로 행렬로 표현하기 어렵다. 그러나 동차 좌표에서는 이동도 행렬 연산으로 처리할 수 있다.
3D 이동 변환의 예
유클리드 좌표에서 이동 변환은 다음과 같다.
(x′,y′,z′)=(x+tx,y+ty,z+tz)
여기서 tx,ty,tz는 이동할 거리이다.
이동을 동차 좌표로 표현하면, 다음과 같은 4x4 행렬로 처리할 수 있다.
⎣⎢⎢⎢⎡100001000010txtytz1⎦⎥⎥⎥⎤
이를 적용하면 동차 좌표계에서 점 (x,y,z,1) 은 아래와 같은 행렬 계산으로 이동한다.
⎣⎢⎢⎢⎡100001000010txtytz1⎦⎥⎥⎥⎤⋅⎣⎢⎢⎢⎡xyz1⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡x+txy+tyz+tz1⎦⎥⎥⎥⎤
장점
- 이동을 포함한 모든 변환을 행렬로 처리
동차 좌표는 스케일링, 회전, 이동과 같은 변환을 모두 단일한 행렬 연산으로 처리할 수 있다.
- 연속적인 변환의 결합
여러 개의 변환(스케일링, 회전, 이동)을 연속적으로 적용할 때, 변환 행렬들을 곱하여 하나의 행렬로 결합할 수 있다. 이는 여러 변환을 하나의 행렬로 처리할 수 있게 하여 계산 효율성을 높인다.
- 투영 변환
동차 좌표는 원근 투영(perspective projection)과 같은 비선형 변환을 행렬 연산으로 간단히 표현할 수 있게 한다.