Scaling(축소, 확대)
→ 행렬의 곱셈으로 표현됨.
축소, 확대 인자 모두 2인 경우
-> x, y 방향 모두 2배 확대된 다각형 얻을 수 있음. 축소도 같은 원리
Rotation (회전 변환)
다음과 같이 정리 할 수 있음.
행렬의 곱셈으로 나타내면 다음과 같다. 2 * 2 행렬이 R(θ)이다.
첫 번째 그림은 θ 를, 가운데 그림은 - θ 를 넣어 얻은 행렬을 적용한 모습이다.
이는 반시계 방향으로 270도 회전한 것과 같으며 세 번째 그림에서 확인 가능하다.
Translation
주어진 점 x, y를 dx, dy만큼 이동시키는 것을 뜻함.
벡터의 곱셈으로 나타냈던 축소&변환, 회전 변환과 다르게 벡터의 덧셈으로 표현이 됨.
--> 동차 좌표를 통해 벡터의 곱셈으로 통일 가능하다.
(x,y)가 주어지면 -> (x, y, 1)이 동차 좌표가 된다.
동차 좌표는 세 번째 좌표가 반드시 1로 국한되는가? 그것은 아님!!
0만 아니라면 어떤 값이든 가능하다.
ex) (2,3) 파티션 좌표가 있다면 동차 좌표는
(2,3,1), (4,6,2), (6,9,3), etc 무한히 많이 존재한다.
점들을 아래 사진처럼 이으면 무한히 긴 직선이 된다.
동차좌표를 카테시안 좌표로 변환할 때는
(X, Y, w) 모두 w로 나누어 (X/w, Y/w, 1)을 만들고, (X/w, Y/w)을 도출해낸다.
-> 확대
2차원 변환의 결합
지금까지 배운 S, R, T 변환을 결합할 수 있다.
AB != BA
원점이 아닌 임의의 점을 통해 로테이션도 가능함.
(3,2)를 원점으로 이동시킴. -> 회전 적용시킬 (5,2)도 (2,0)의 좌표 가지게 됨 -> 90도 회전 -> 원상복귀
아핀 변환
세 번째 행은 항상 0 0 1 고정.
그러므로 나머지 2 * 3 행렬을 [L|t]로 나타낸다. L은 좌측 상단 2 * 2 행렬이며 t는 3번 열을 의미한다.
t - 선형 변환 요소가 들어갈 수 있음
[L|t]를 개념적으로 바라보면
- L은 첫 번째로 적용됨
- 선형 변환된 물체에 t를 적용하는 것
- 각 정점을 p라고 할 떄 Lp + t 방식으로 변환되는 것임
- [L|t]에 R, S, T 포함됨
Rigid-body motion(강체)
3D Scaling
축소 확대 인자 모두 같으면(두 번째) uniform, 그렇지 않으면(세 번째) non-uniform이라고 칭함.
3 * 3 행렬로 표현이 됨.
(a)는 z축 중심으로 90도 회전한 것이다. 3차원 회전은 회전축을 필요로 한다.
회전 후에도 z 좌표는 그대로 유지가 된다.
(b)는 x축을 중심으로 회전시켰다. 마찬가지로 회전 후에도 x 좌표는 같다.
y축 회전도 z, x축 회전과 동일하다.
축 회전 방향에 따라 세타의 부호를 결정함 = 오른손 법칙
엄지를 회전축과 나란하게 하면 네 손가락이 감싸쥐는 방향이 회전 방향이다.
월드 변환
구, 주전자는 각각 나름의 object space에서 만들어짐. -> world space를 따로 만들어 함께 배치함.
3D 아핀변환은 다음과 같다.
, Object-space 기저
모델링이 끝나면 오브젝트는 오브젝트 공간과 결박되어 있다고 이해하면 됨. 분리 불가능.
OS 기저는 { u, v, n}으로 표현하는 것이 관례.
WS 기저는 {e1, e2, e3}으로 표현함.
초기 조건은 OS = WS
물체를 회전시키면 u, v, n은 함께 이동함.
역변환
x, y, z 좌표 점을 -dx, -dy, -dz만큼 옮김.
이전의 변환을 무효화 시키는 것이 기본적인 역변환의 역할임.
역수 이용함.
역회전
-> 단위 행렬
위의 수식은 아래와 같은 결과를 보이고 있음. 회전의 전치 행렬은 역변환과 같다.
유용하게 쓰이는 개념이므로 잘 숙지할 것.
이미지 출처
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문]
'컴퓨터 그래픽스' 카테고리의 다른 글
2024.7.6(토) 6장 OpenGL ES와 쉐이더 (0) | 2024.07.12 |
---|---|
2024.7.4(목) 5장 - 정점 처리 (0) | 2024.07.07 |
6.29 3장 - 모델링 (0) | 2024.06.30 |
6.27 2장 - 수학 기초 (1) | 2024.06.30 |
6.25 1장 - 서론 (0) | 2024.06.30 |