Scaling
Scaling은 uniform scaling과 non-uniform scaling으로 구분되고
아래와 같은 연산을 통해 Scaling 변환이 가능하다
Rotation
아래와 같은 연산을 통해 Rotation 변환이 가능하고
CCW 기반으로 각도가 증가한다
위의 연산은 기준점이 원점인 경우에만 가능하다
따라서,
기준점이 다른 경우에는
1) 기준점을 원점으로 이동시킨다 (Translating)
2) 회전한다 (Rotating)
3) 1번에서 차이가난 만큼 다시 해당 좌표를 이동시킨다 (Back-Translating)
Translation
Scaling과 Rotation은 행렬의 곱으로 연산이 되지만
Translation(이동) 변환도 행렬의 곱으로 연산하기 위해서
Homogeneous Coordinates (동차좌표계)를 통해서 Translation을 한다
Homogeneous Coordinates (동차좌표계)
일반적인 Cartesian Coordinate (데카르트 좌표계)에서 하나의 요소가 추가되어
(x, y)는 (x, y, 1)로
(x, y, z)는 (x, y, z, 1)로 표현한다
추가되는 요소는 기본적으로 1이지만
w에 따라서 wx, wy, w와 같은 형태를 나타내기 때문에
무조건 1은 아니다
예를 들어,
(x, y, 1)은 (2x, 2y, 2), (3x, 3y, 3)과 같이 표현된다
따라서,
Cartesian에서 Homogeneous으로 변환하려면, w의 값을 추가해주고 w만큼 각각의 좌표에 곱해주면 된다
Homogeneous에서 Cartesian으로 변환하려면, w의 값을 모든 좌표에 나눠주면 된다
이처럼 동차좌표계는 해당하는 선에 있는 모든 점을 표현한다
Transform Composition
1) T * (R * v) = (T * R) * v
결합 법칙은 성립한다
2) T * (R * v) ≠ R * (T * v)
교환 법칙은 성립하지 않는다
'그래픽스 > [전북대] OpenGL' 카테고리의 다른 글
[OpenGL Note] 3D Transform (0) | 2024.04.13 |
---|---|
[OpenGL Note] Affine Transform, Rigid Transform (0) | 2024.04.13 |
[OpenGL Note] 렌더링 파이프라인 (0) | 2024.04.12 |
[OpenGL Note] 모델링 (0) | 2024.04.11 |
[OpenGL Note] 기초 수학 (0) | 2024.04.11 |