Processing math: 100%
본문 바로가기
Computer Science/Computer Graphics

Transformation in 3D

by Gofo 2021. 3. 16.

📝 목차



3D Cartesian Coordinate System

왼쪽은 2차원 좌표평면에서의 모습이고, 오른쪽은 3차원 좌표공간에서의 모습이다.

그런데 3차원의 경우 z축을 어디로 잡느냐를 결정해야 한다.

 

둘 다 사용하고 있으며 앞쪽으로 나와있는 것을 Right-handed cartesian coordinates라고 하고, 뒤쪽으로  빠져있는 것을 Left-handed cartesian coordinates라고 한다.

좌 : 2차원 / 우 : 3차원

 

Right-handed vs Left-handed coordinates systems

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

반면에 왼손으로 했을 때 엄지손가락이 z축을 향한다면 Left-handed cartesian coordinates이다.

Cartesian coordinate system in 3D

 

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+ydy+zdzyz]

 

 

  • x, z축은 그대로 두고, y축 방향으로 밀 때,

Hy,d=[100dx1dz001]

[100dx1dz001][xyz]=[xxdx+y+zdzz]

 

  • x, y축은 그대로 두고, z축 방향으로 밀 때,

Hz,d=[100010dxdy1]
[100010dxdy1][xyz]=[xyxdx+ydy+zdz]

 

 

Rotation

어떠한 한 축을 기준으로 회전시킨다.

  • x축을 기준으로 회전시켰을 때
    • x의 좌표는 변하지 않는다.

Rx,θ=[1000cosθsinθ0sinθcosθ]

 

  • y축을 기준으로 회전시켰을 때
    • y의 좌표는 변하지 않는다.
    • sin의 부호가 다름에 주의해야한다!

Ry,θ=[cosθ0sinθ010sinθ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

댓글