반사 변환(reflection transformation)은 특정한 축을 기준으로 점들의 위치를 좌우 혹은 상하로 뒤집는 변환을 의미한다. 동차좌표계를 이용하면 다양한 반사 변환을 효율적으로 나타낼 수 있다. 이러한 변환은 2차원과 3차원 공간 모두에서 가능하다. 본 장에서는 이를 동차좌표계를 통해 설명한다.
2차원 공간에서의 반사 변환
x축에 대한 반사
점 $(x, y)$를 x축에 대해서 반사시키려면 다음 행렬을 사용한다:
Mx=1000−10001
이 때, 점 $(x, y)$의 동차 좌표는 $\mathbf{P} = \begin{bmatrix} x & y & 1 \end{bmatrix}^T$ 이므로, 변환된 점 $\mathbf{P'}$는 다음과 같이 계산된다:
P′=MxP=1000−10001xy1=x−y1
y축에 대한 반사
점 $(x, y)$를 y축에 대해서 반사시키려면 다음 행렬을 사용한다:
My=−100010001
변환된 점 $\mathbf{P'}$는 다음과 같이 계산된다:
P′=MyP=−100010001xy1=−xy1
원점에 대한 반사
점 $(x, y)$를 원점에 대해서 반사시키려면 다음 행렬을 사용한다:
Mo=−1000−10001
변환된 점 $\mathbf{P'}$는 다음과 같이 계산된다:
P′=MoP=−1000−10001xy1=−x−y1
y = x선에 대한 반사
점 $(x, y)$를 직선 $y = x$에 대해서 반사시키려면 다음 행렬을 사용한다:
Myx=010100001
변환된 점 $\mathbf{P'}$는 다음과 같이 계산된다:
P′=MyxP=010100001xy1=yx1
임의의 직선 $y = mx + c$에 대한 반사
점 $(x, y)$를 임의의 직선 $y = mx + c$에 대해서 반사시키기 위해, 우선 직선을 원점으로 평행이동 한 후, 회전 행렬을 통해 직선을 x축과 평행하게 만든다. 그 후 x축에 대한 반사를 적용하고, 역순 변환을 통해 원래 위치로 돌리는 과정을 따른다.
더 자세히 설명하면:
평행이동 행렬 $\mathbf{T}$:
T=1000100−c1
회전 행렬 $\mathbf{R}$:
R=cosθsinθ0−sinθcosθ0001
여기서 $\theta$는 $\tan\theta = m$을 만족하는 각도이다.
x축에 대한 반사행렬 $\mathbf{M_x}$는 이미 위에서 다루었던 것과 같다:
Mx=1000−10001
역회전 행렬 $\mathbf{R}^{-1}$:
R−1=cosθ−sinθ0sinθcosθ0001
역 평행이동 행렬 $\mathbf{T}^{-1}$:
T−1=1000100c1
결합 변환 행렬 $\mathbf{M_{line}}$은 다음과 같다:
Mline=T−1R−1MxRT
이제 점 $(x, y)$를 이 변환 행렬을 통해 반사시킬 수 있다.
3차원 공간에서의 반사 변환
3차원 공간에서는 xy평면, yz평면, xz평면 등을 기준으로 반사를 수행할 수 있다.
xy 평면에 대한 반사
점 $(x, y, z)$를 xy 평면에 대해서 반사시키려면 다음 행렬을 사용한다:
Mxy=1000010000−100001
yz 평면에 대한 반사
점 $(x, y, z)$를 yz 평면에 대해서 반사시키려면 다음 행렬을 사용한다:
Myz=−1000010000100001
xz 평면에 대한 반사
점 $(x, y, z)$를 xz 평면에 대해서 반사시키려면 다음 행렬을 사용한다:
Mxz=10000−10000100001
임의의 평면에 대한 반사
임의의 평면 $ax + by + cz$ = d에 대한 반사 변환은 더욱 복잡하다. 이 경우 다음와 같은 절차를 따른다: