3D Scaling
좌표 하나가 추가된 것으로
아래와 같은 연산을 통해 변환을 할 수 있다

3D Rotation
어느 축을 기준으로 회전하느냐에 따라 연산이 달라진다
기준 축의 좌표는 변하지 않는 것이 특징이다
회전의 방향 및 각도의 증가는 오른손 법칙(CCW)을 따른다

3D Translation
Homogeneous Coordinate를 통해 행렬의 곱셈을 통해 연산한다

3D Affine Transform
아핀 변환으로 구성된 행렬을
아무리 많은 변환을 하더라도
그 결과는 L과 T로 구성되고
마지막 행은 (0, 0, 0, 1)로 구성된다

축회전행렬
object space basis를 u, v, n (모두 단위 벡터이다)
world space basis를 e1, e2, e3라고 한다면,
아래와 같은 결과를 통해서
축회전행렬의 각각의 열이
축회전의 좌표에 따라 구분되는 것을 알 수 있다



따라서,
축회전행렬을 통해 각각 어떤 축이 얼마나 회전되었는지를 알 수 있고
반대로는
축의 회전한 만큼의 값(u, v, n)을 통해 축회전행렬을 알 수 있다

Inverse Translation
이동을 했다면, 다시 돌아오며 복구되는 행렬 결과가 나온다

Inverse Scaling
확대/축소를 했다면, 다시 축소/확대하며 복구되는 행렬 결과가 나온다

Inverse Rotation
축회전행렬은 단위벡터이고 orthonormal basis이다
이는
u * u = v * v = n * n = 1
u * v = v * n = n * u = 0을 의미한다
따라서,
orthonormal basis로 구성된 회전행렬의 역행렬은 전치행렬과 같다


이처럼 전치행렬을 통해 쉽게 회전을 되돌릴 수 있다
'게임 그래픽스 > [전북대] OpenGL' 카테고리의 다른 글
[OpenGL Note] View Transform (0) | 2024.04.14 |
---|---|
[OpenGL Note] World Transform (0) | 2024.04.14 |
[OpenGL Note] Affine Transform, Rigid Transform (0) | 2024.04.13 |
[OpenGL Note] 2D Transform (0) | 2024.04.12 |
[OpenGL Note] 렌더링 파이프라인 (0) | 2024.04.12 |