이동 변환은 원점을 기준으로 벡터 $\mathbf{t} = (t_x, t_y, t_z)$만큼 좌표를 평행 이동시키는 것을 말한다. 이는 동차좌표계를 사용하면 다음과 같이 표현할 수 있다.
이동 변환을 $\mathbf{T}$ 행렬로 나타내면:
T=100001000010txtytz1 3차원 점 $\mathbf{p} = (x, y, z, 1)$을 이동시키려면, $\mathbf{p}'$를 구하는 식은 다음과 같다.
p′=Tp 이를 풀어서 쓰면:
x′y′z′1=100001000010txtytz1xyz1=x+txy+tyz+tz1 따라서, 이동된 좌표는 $\mathbf{p}' = (x + t_x, y + t_y, z + t_z)$가 된다.
회전 변환은 특정 축을 중심으로 주어진 각도만큼 회전시키는 것을 말한다. 회전 변환은 축에 따라 다른 변환 행렬을 갖는다.
$\theta$만큼 x축을 기준으로 회전하는 변환은 다음과 같다:
Rx(θ)=10000cosθsinθ00−sinθcosθ00001 $\theta$만큼 y축을 기준으로 회전하는 변환은 다음과 같다:
Ry(θ)=cosθ0−sinθ00100sinθ0cosθ00001 $\theta$만큼 z축을 기준으로 회전하는 변환은 다음과 같다:
Rz(θ)=cosθsinθ00−sinθcosθ0000100001 회전 변환을 적용하기 위해서는 해당 회전 행렬을 원래의 동차 좌표에 곱해주면 된다. 예를 들어, 점 $\mathbf{p}$를 x축 기준 $\theta$만큼 회전시키려면:
p′=Rx(θ)p 확대/축소 변환은 각 축을 기준으로 크기를 조절하는 변환을 말한다. 확대/축소 변환 행렬은 다음과 같다:
S=sx0000sy0000sz00001 여기서 $s_x$, $s_y$, $s_z$는 각각 x, y, z축 방향의 확대/축소 비율이다.
축소/확대를 적용하려면 단순히 $\mathbf{S}$를 원래의 점에 곱해주면 된다:
p′=Sp 이를 풀어서 쓰면:
x′y′z′1=sx0000sy0000sz00001xyz1=sxxsyyszz1 따라서, 확대/축소된 좌표는 $\mathbf{p}' = (s_x x, s_y y, s_z z)$가 된다.
복합 변환은 여러 개의 기본 변환(이동, 회전, 확대/축소)을 결합하여 하나의 변환으로 만들어낸 것이다. 이를 위해 각 변환 행렬을 곱하면 된다. 각 변환의 순서가 중요하다. 일반적으로, 변환의 순서는 다음과 같이 적용된다:
예를 들어, 점 $\mathbf{p}$에 대해 먼저 확대/축소 $\mathbf{S}$, 그 다음 회전 $\mathbf{R}$, 마지막으로 이동 $\mathbf{T}$를 적용하려면 복합 변환 행렬은 다음과 같다:
M=TRS 따라서, 점 $\mathbf{p}$의 최종 변환된 위치 $\mathbf{p}'$는:
p′=Mp=TRSp 다음은 각 기본 변환들을 복합하여 변환 행렬을 계산하는 예시이다. 예를 들어, 먼저 x축으로 2배 확대, z축으로 45도 회전, 마지막으로 (5, 5, 0)만큼 이동시키는 변환을 복합하면:
확대/축소 변환 행렬 $\mathbf{S}$:
S=2000010000100001 z축 회전 변환 행렬 $\mathbf{R}_z (45^\circ)$:
Rz=cos45∘sin45∘00−sin45∘cos45∘0000100001=222200−22220000100001
T=1000010000105501 각 변환 행렬을 각각 순서대로 곱하면 복합 변환 행렬 $\mathbf{M}$은 다음과 같다:
M=TRzS =1000010000105501222200−222200001000012000010000100001 이를 계산하면 최종 복합 변환 행렬 $\mathbf{M}$을 얻을 수 있다.
이제 해당 복합 변환 행렬을 원래의 점 $\mathbf{p}$에 적용하면 최종 변환된 좌표를 구할 수 있다.