최근 수정 시각 : 2024-08-01 21:29:25

동차 좌표

1. 개요2. 사용하는 이유

1. 개요

homogeneous coordinate system
동차 좌표( )는 특정 비율의 좌표는 모두 동일한 좌표를 나타낼 때 쓰인다. 즉, [math( \left(좌표A \right) )] = [math(k)][math(\left(좌표B \right) )] (단 [math(k)] [math(\ne)] 0) 일 때 A랑 B는 동차 좌표이다. 예로 들자면, 동차 좌표 [math(\left(-4, -2, -14\right))] 와 [math(\left(2, 1, 7\right))]는, [math(\left(-4, -2, -14\right))] = -2[math(\left(2, 1, 7\right))] 이기 때문에 동일한 좌표이다. 극좌표처럼 다르게 표현된 좌표가 동일한 좌표일 수도 있다는 유사점이 있다.
동차좌표는 n차원의 직교좌표를 n+1차원으로 확장한 것이다. 동차좌표 [math(\left(x, y, z… ,v, w\right))]에 상응하는 직교좌표는 [math(\left(\dfrac xw, \dfrac yw, \dfrac zw, ... ,\dfrac vw\right))]이다. 고로, 앞서 언급한 동차좌표 [math(\left(2, 1, 7\right))]는 [math(\left(\dfrac 27, \dfrac 17\right))]이라는 직교 좌표를 동차좌표로 바꾼 것이다. 직교 좌표를 동차 좌표로 바꾸는 거는 매우 쉬운데, w=1일 경우 ((직교좌표), 1)이 동차 좌표가 된다. 뒤에 1이라는 새로운 차원만 추가해주면 된다.
최소 정수의 비를 중요하게 생각하는 분수와 다르게[1], 동차좌표는 최소 정수의 비로 나타내는 것이 관례가 아니라 최소 정수의 비로 나타내지 않아도 상관은 없다. 그러나, [math(\left(-4, -2, -14\right))]보다는 [math(\left(2, 1, 7\right))]가 계산하기에 편하기 때문에, 추가적인 계산을 위해서 최소 정수의 비로 나타내는 경우도 있는 편.

2. 사용하는 이유

가장 근본적인 목적은, 상수항 차원을 만들기 위해서이다. 직교 좌표 [math(\left(\dfrac 27, \dfrac 17\right))] 등은, 상수항이 없고 오로지 x좌표와 y좌표만 사용되기 때문.
동차좌표를 사용하지 않을 경우, 이동 행렬에 회전 행렬 또는 scaling 행렬 등을 곱할 수 없다. 이동 행렬은 상수항 부분의 곱으로 작용하기 때문. x좌표와 y좌표 등 상수와 무관한 부분과 곱해져 하나의 변환행렬로 나타낼 수 없다.

실제 행렬을 이용해서 더 자세하게 살펴볼 때, a b c d 로 이루어진 행렬을 변환행렬이라고 하자.
[math(\begin{bmatrix} a & b \\ c & d \end{bmatrix} )] [math(\begin{bmatrix} x \\ y \end{bmatrix} )] = [math(\begin{bmatrix} ax + by \\ cx + dy \end{bmatrix} )]
Scaling 행렬은 b=c=0이고, 회전행렬의 경우 특정 상수가 더해지는 것이 아니므로 동차 좌표가 없어도 충분하다. 하지만, 이동행렬은 상수항만큼 이동하는 것이지, x나 y의 특정 배수만큼 이동하는 것이 아니므로, 상수항 역할을 할 수 있는 동차좌표 없이 이동행렬을 나타낼 수 없다. 물론, 이동행렬을 곱하는 것이 아닌 더할 경우에는 동차좌표 없이 나타낼 수 있으나, 로봇공학의 기본 원리는 변환행렬을 더하는 것이 아닌 곱하는 것이므로, 변환행렬들의 곱으로 나타내기 위해서는 고로 동차좌표를 이용해야 한다.

다양한 homogeneous 행렬에 관해서는 로봇공학 문서 참고.
두 점을 지나는 좌표를 구할 때에도 동차좌표가 쓰인다. 두 점을 동차좌표로 나타내고 외적하면, 그 점을 지나는 직선의 법선벡터가 된다.


[1] 분자 분모를 최소 정수의 비로 나타내는 약분을 하는 것이 통상적이며, 이에 따라 대부분의 수학 시험에서는 약분을 필수로 해야 불이익이 없다.