block-quote On this pagechevron-down
copy Copy chevron-down
docs chevron-right applied_math chevron-right homogeneous_coordinates chevron-right 제6장: 아핀 변환과 동차좌표 동차좌표로 표현한 아핀 변환 2D 및 3D 아핀 변환을 동차좌표(homogeneous coordinates)로 표현하면, 동일한 형식으로 나타낼 수 있어 더 간편해진다. 동차좌표를 사용하기 위해, 원래의 2D 좌표 $(x, y)$는 $(x, y, 1)$로 표현되고, 3D 좌표 $(x, y, z)$는 $(x, y, z, 1)$로 표현된다. 변환 행렬은 차원에 따라 확장된다.
2D 아핀 변환의 동차좌표 표현
2D 아핀 변환을 동차좌표로 표현하면 다음과 같다:
[ x ′ y ′ 1 ] = [ a b t x c d t y 0 0 1 ] [ x y 1 ] \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & t_x \\ c & d & t_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} x ′ y ′ 1 = a c 0 b d 0 t x t y 1 x y 1 따라서 다음과 같이 직관적으로 표현할 수 있다:
[ x ′ y ′ 1 ] = [ 1 0.5 10 − 0.5 1 20 0 0 1 ] [ x y 1 ] = [ x + 0.5 y + 10 − 0.5 x + y + 20 1 ] \begin{aligned} \begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} &= \begin{bmatrix} 1 & 0.5 & 10 \\ -0.5 & 1 & 20 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} \\ &= \begin{bmatrix} x + 0.5y + 10 \\ -0.5x + y + 20 \\ 1 \end{bmatrix} \end{aligned} x ′ y ′ 1 = 1 − 0.5 0 0.5 1 0 10 20 1 x y 1 = x + 0.5 y + 10 − 0.5 x + y + 20 1 3D 아핀 변환의 동차좌표 표현
3D 아핀 변환을 동차좌표로 표현하면 다음과 같다:
[ x ′ y ′ z ′ 1 ] = [ a b c t x d e f t y g h i t z 0 0 0 1 ] [ x y z 1 ] \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} = \begin{bmatrix} a & b & c & t_x \\ d & e & f & t_y \\ g & h & i & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} x ′ y ′ z ′ 1 = a d g 0 b e h 0 c f i 0 t x t y t z 1 x y z 1 따라서 다음과 같이 직관적으로 표현할 수 있다:
[ x ′ y ′ z ′ 1 ] = [ 1 0 0.5 15 0 1 0.5 25 − 0.5 0 1 35 0 0 0 1 ] [ x y z 1 ] = [ x + 0.5 z + 15 y + 0.5 z + 25 − 0.5 x + z + 35 1 ] \begin{aligned} \begin{bmatrix} x' \\ y' \\ z' \\ 1 \end{bmatrix} &= \begin{bmatrix} 1 & 0 & 0.5 & 15 \\ 0 & 1 & 0.5 & 25 \\ -0.5 & 0 & 1 & 35 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} \\ &= \begin{bmatrix} x + 0.5z + 15 \\ y + 0.5z + 25 \\ -0.5x + z + 35 \\ 1 \end{bmatrix} \end{aligned} x ′ y ′ z ′ 1 = 1 0 − 0.5 0 0 1 0 0 0.5 0.5 1 0 15 25 35 1 x y z 1 = x + 0.5 z + 15 y + 0.5 z + 25 − 0.5 x + z + 35 1 이렇게 동차좌표를 사용하면, 점을 변환하기 위한 행렬 계산이 간단해진다.