2차원 그래픽 변환은 컴퓨터 그래픽스에서 기본적이면서도 중요한 주제이다. 동차 좌표 시스템을 사용하면, 일관된 방식으로 선형 변환(회전, 축소/확장, 평행이동 등)을 수행할 수 있다.
평행이동 (Translation)
평행이동은 객체를 일정한 거리만큼 이동시키는 변환이다. 2D 평행이동을 정의하는 변환 행렬 $\mathbf{T}$는 다음과 같다:
T=100010txty1 여기서 $t_x$와 $t_y$는 각각 x축과 y축 방향으로의 이동 거리이다. 동차 좌표계에서 점 $\mathbf{P}(x, y)$를 이동시키는 연산은 다음과 같이 표현된다:
P′=TP=100010txty1xy1 회전 변환은 객체를 원점 중심으로 일정한 각도만큼 회전시키는 변환이다. 회전을 정의하는 변환 행렬 $\mathbf{R}$는 다음과 같다:
R=cosθsinθ0−sinθcosθ0001 여기서 $\theta$는 회전 각도이다. 동차 좌표계에서 점 $\mathbf{P}(x, y)$를 회전시키는 연산은 다음과 같이 표현된다:
P′=RP=cosθsinθ0−sinθcosθ0001xy1 스케일링 변환은 객체의 크기를 조정하는 변환이다. 2D 스케일링을 정의하는 변환 행렬 $\mathbf{S}$는 다음과 같다:
S=sx000sy0001 여기서 $s_x$와 $s_y$는 각각 x축과 y축 방향으로의 스케일링 팩터이다. 동차 좌표계에서 점 $\mathbf{P}(x, y)$를 스케일링하는 연산은 다음과 같이 표현된다:
P′=SP=sx000sy0001xy1 이제 평행이동, 회전, 스케일링을 조합하여 종합 예제를 만들어 보겠다.
예를 들어, 원점에 있는 점 $\mathbf{P}(1, 1)$을 먼저 x축 방향으로 2 단위, y축 방향으로 3 단위 평행이동시키고, 45도 회전시킨 다음, x축 방향으로 2배, y축 방향으로 3배 스케일링한다고 가정해 봅시다.
Step 1: 평행이동
T=100010231 프로덕트:
P1=TP=100010231111=341 Step 2: 회전
R=cos45∘sin45∘0−sin45∘cos45∘0001=22220−22220001 프로덕트:
P2=RP1=22220−22220001341=−0.7074.9491 Step 3: 스케일링
S=200030001 프로덕트:
P3=SP2=200030001−0.7074.9491=−1.41414.8471 따라서 최종적으로 변환된 점의 좌표는 $(-1.414, 14.847)$가 된다.
이러한 각 변환을 하나의 결합 변환 행렬로 표현할 수도 있다. 결합된 변환 행렬 $\mathbf{C}$는 각각의 변환 행렬을 순서대로 곱한 결과이다.
C=SRT 이를 통해 다양한 그래픽 변환을 한 번에 적용할 수 있다.
이 예제는 동차 좌표계를 사용하여 2차원 그래픽 변환을 수행하는 방법을 잘 보여준다. 동차 좌표계는 복잡한 변환을 간결하고 체계적으로 처리할 수 있게 해준다.