Scaling, Rotation, Translation 변환 개념은 생략하도록 하겠다.
Translation and Homogeneous Coordinators
Translation을 살펴보면 주어진 점 x,y를 dx,dy만큼 이동시키는 것이다.
그 과정은 변이벡터 (dx, dy)를 원래 주어진 점에 더하여 벡터의 덧셈으로 표현될것이다. 앞에 것과 다른 점으로 곱셈이 아닌 덧셈으로 표현이 된다는 것이다.

이것을 통일시키기 위해 Homogeneous Coordinates(동차 좌표)를 이용하면 행렬 곱셈으로 나타내는 것이 가능하다.
일단 2차원 좌표 x,y가 주어졌을 때, 세번째 좌표를 1로 할당한다. (x, y) → (x, y, 1)
이것이 Homogeneous Coordinates 이다.
우리는 Identity Matrix를 알고 있다.
Identity Matrix의 세번째 column에 변위벡터 dx, dy를 넣으면 3x3행렬이 얻어진다.
그렇다면 동차 좌표로 표현한 (x,y,1)에 행렬을 곱하면 덧셈의 결과가 같다는 것을 알 수 있다.
Scaling과 Rotation과의 통일성을 위해 곱셈으로 나타낼 수 있다.

앞서2차원 Cartesian 좌표가 주어졌을 때, 세번째 좌표로 1을 추가했었다.
하지만 반드시 1로 국한 되는 것은 아니다. 세번째 좌표를 보통 w로 표현하는데 0만 아니라면 어떤 값이나 가능하다.
단 x와 y 앞에도 w를 곱해주어야한다.
예를 들어 (2,3) 이라는 cartesian 좌표가 있다. 이때 (2,3,1)이 유일한 동차 좌표가 아니라는 것이다.
(4,6,2) , (6,9,3)과 같이 무한하게 많이 존재할 수 있다.
그림에서 살펴보면
2차원 공간을 정의하는 x,y축이 있고 w축이 더해져 3차원 공간을 만든다
w좌표가 1인 곳에 하나의 평면을 생각할 수 있다. 그래서 2,3 이라는 cartesian 좌표가 있을 때, 그 좌표를 위로 평면으로 끌어올리면 (2,3,1) 동차 좌표가 만들어진다.
만들어진 점을 원점과 이어서 하나의 직선이 정의가 되는데 이 직선에 모든 동차 좌표가 모여있게 되는 것이다.
동차 좌표(X,Y,w)가 주어졌을때 cartesian좌표는 어떻게 구할까?
세가지 모두 w로 나누면 된다.

동차 좌표 때문에 Translation같은 경우 3 x 3 행렬이 되었다.
하지만 Scailing과 Rotation은 아직 2x2행렬이다. 이것 역시 통일성을 주어야한다.
간단하게 다음과 같이 나타낼 수 있다.

Transform composition
여러 변환(예: 이동, 회전, 스케일링)을 결합하여 하나의 복합 변환을 생성하는 과정을 의미한다.
Scaling, Rotation, Translation 모두 3x3크기의 행렬로 표시할 수 있게 되었다.
하지만 이러한 변환이 한 번만 이루어진다고 국한시킬 필요는 없다.
90도 회전 후 (7,0)변위 벡터를 따라 이동 시키는 예시는 다음과 같다.
우리는 이미 행렬 곱셈은 교환법칙이 성립 안 한다는 것을 알고 있다. 그부분을 주의하도록 하자.

지금까지의 Rotation은 원점을 중심으로 정의가 된 Rotation이다.
하지만 임의의 점을 중심으로 Rotation을 한다면?
(5,2)좌표를 점(3,2)를 중심으로 90도 회전하는 예제를 보자.
점(3,2)가 원점이면 편할 것이라는 것을 느낄 수 있다. 따라서 그렇게 만들어준다.
(3,2) 를 원점으로 이동하는 Translation을 적용한다.
회전이 적용이 되어야 할 (5,2) 역시 Translation를 적용하여 (2,0)로 바꿔준다.
이제 Rotation을 적용시키면 (0,2)가 된다.
마지막으로 처음에 적용한 Translation을 거꾸로 적용하여 복귀하면 원하는 결과가 나온다는 것을 알 수 있다.


참고
opengl es를 이용한 3차원 컴퓨터 그래픽스 입문
'Computer Graphics' 카테고리의 다른 글
컴퓨터 그래픽스 - Rasterizer(2), ViewPort (1) | 2024.01.16 |
---|---|
컴퓨터 그래픽스 - Rasterizer(1) (0) | 2024.01.13 |
컴퓨터 그래픽스(4) - World Transform (1) | 2024.01.10 |
컴퓨터 그래픽스(3) - Affine Transform (1) | 2024.01.07 |
컴퓨터 그래픽스(1) - 모델링 (5) | 2024.01.06 |
댓글