📝 목차
3D Cartesian Coordinate System
왼쪽은 2차원 좌표평면에서의 모습이고, 오른쪽은 3차원 좌표공간에서의 모습이다.
그런데 3차원의 경우 z축을 어디로 잡느냐를 결정해야 한다.
둘 다 사용하고 있으며 앞쪽으로 나와있는 것을 Right-handed cartesian coordinates라고 하고, 뒤쪽으로 빠져있는 것을 Left-handed cartesian coordinates라고 한다.


Right-handed vs Left-handed coordinates systems
오른손을 폈을 때 손가락이 x축을 향하고 그 상태로 손가락을 접었을 때 y축을 향하게 두었을 때, z축이 엄지손가락 방향이면 Right-handed cartesian coordinates이다.
반면에 왼손으로 했을 때 엄지손가락이 z축을 향한다면 Left-handed cartesian coordinates이다.

3x3 Matrix
Cartesian coordinates에서 3x3 matrix는 아래와 같이 나타낸다.
[m11m12m13m21m22m23m31m32m33][pxpypz]
3D Linear Transformation
2D에서 했던 것과 거의 같은 방식으로 진행된다.
다만, transformation되는 방향이 x, y축에서 x, y, z 축으로 변경되었다.
Scale
x, y, z축 방향으로 일정 배율 늘린다.
Ss=[sx000sy000sz]
Shear
어떠한 축 방향으로 미는 것이다.
- y, z축은 그대로 두고, x 축 방향으로 밀 때,
Hx,d=[1dydz010001]
[1dydz010001][xyz]=[x+y⋅dy+z⋅dzyz]
- x, z축은 그대로 두고, y축 방향으로 밀 때,
Hy,d=[100dx1dz001]
[100dx1dz001][xyz]=[xx⋅dx+y+z⋅dzz]
- x, y축은 그대로 두고, z축 방향으로 밀 때,
Hz,d=[100010dxdy1]
[100010dxdy1][xyz]=[xyx⋅dx+y⋅dy+z⋅dz]
Rotation
어떠한 한 축을 기준으로 회전시킨다.
- x축을 기준으로 회전시켰을 때
- x의 좌표는 변하지 않는다.
Rx,θ=[1000cosθ−sinθ0sinθcosθ]

- y축을 기준으로 회전시켰을 때
- y의 좌표는 변하지 않는다.
- sin의 부호가 다름에 주의해야한다!
Ry,θ=[cosθ0sinθ010−sinθ0cosθ]


- z축을 기준으로 회전시켰을 때
- z의 좌표는 변하지 않는다.
Rz,θ=[cosθ−sinθ0sinθcosθ0001]

Homogeneous Coordinate System in 3D
Homogeneous coordinate는 기존의 차원에서 1인 point를 한개 더 추가한 것으로 matrix를 만든다.
즉, 3D에서는 아래와 같이 4개로 vector가 표현된다.
[px,py,pz,1]
[m11m12m130m21m22m230m31m32m3300001][pxpypz]
참고 : 점의 표현 : 2D vs 3D

Affine Transformation
Translation (평행이동)
Cartesian coordinates에서는 vector addition으로 나타난다.
[pxpypz]+[uxuyuz]
Homogeneous coordinates에서는 4x4 matrix multiplication으로 나타난다.
[100ux010uy001uz0001]
Affine Transformation
Homogeneous coordinates에서 Affine transformation은 4x4 matrix로 표현된다.
2D에서와 유사한 모습이다.

참고
본 포스트는 한양대학교 이윤상 교수님의 수업을 정리한 내용입니다.
출처: 한양대학교 이윤상 교수님 컴퓨터그래픽스 강의 강의자료 - https://cgrhyu.github.io/courses/2022-spring-cg.html
CGR LAB
Computer Graphics - 2022 Spring Instructor: Yoonsang Lee Teaching Assistant: Chaejun Sohn Undergraduate Mentor: Bokyoung Jang Time / Location: Mon 09:00-11:00 / Online (originally 207 IT.BT Building) - Lab Wed 09:00-11:00 / 508 IT.BT Building - Lecture Cou
cgrhyu.github.io
'Computer Science > Computer Graphics' 카테고리의 다른 글
Affine Frame (0) | 2021.03.23 |
---|---|
[OpenGL] Transformation Matrix (0) | 2021.03.23 |
Transformation in 2D (0) | 2021.03.16 |
[GLFW] Input handling (0) | 2021.03.13 |
[OpenGL] Vertex의 기본 (0) | 2021.03.12 |
댓글