Homogeneous Coordinate
이전 글 2D Geometric Transformation에 이어서.
Homogeneous Coordinates
(x,y) 라는 2D 좌표를 확장하여 (x,y,1) 으로 표현하는 것이다.
즉, 2D 좌표계를 3X3 matrix로 확장한 것이다.
(만약 3D 좌표계라면, 4 X 4 matrix가 된다.)
Homogeneous Coordinates의 특징
- (x, y, h) 일 때, h=1 일 때 augmented vector라고 부름.
- 원점 : (0, 0, 1)
- (x, y, 0) : 0을 곱해도 x, y가 남아있을 정도면 엄청 크므로, 숫자가 무한대였을 것이라 생각.
- (0, 0, 0) : Homogeneous Coordinates에서는 존재하지 않음.
왜 확장하지?
이유는 Transformation 연산을 동일하게 곱셈으로 연산해주고 싶어서이다.
2D Geometric Transformation에서
Rotation과 Scaling은 2X2 matrix에 곱셈으로 변환했었으나,
Translation matrix만 2X1 matrix였고, 덧셈으로 변환했었다.
그래서 Translation matrix를 어떻게 잘 해볼수 없을까? 에서 나온 것이 Homogeneous Coordinates이다.
2D Coordinates와 Homogeneous Coordinates를 비교해보자.
Homogeneous Coordinates에서는 모두 3X3 matrix로 표현되었다.
Translation matrix가 다른 변환행렬과 같은 크기가 된 것이다.
그래서 변환점은 다음과 같이 표현해줄 수 있다.
그러면 거꾸로 하는 건?
한 쪽으로 이동했으면, 반대편으로도 이동해야 하고
한 쪽으로 회전했으면, 반대편으로도 회전해야 하고
커졌다면, 줄어들기도 해야한다.
반대의 Transformation matrix는 위와 같이 표현된다.
Inverse Transformation matrix는 Transformation matrix의 역행렬과 같다.
다중 연산
Translation 과 Rotation은 더하고, Scaling은 곱하는 연산이 된다.
주의할 점 (계산순서)
이렇게 Homogeneous Coordinates를 사용하면 복잡한 변환들이 와도 Transformation matrix를 적절히 잘 곱해주면 원하는 변환을 해줄 수 있을 것이다.
그리고 계산순서를 주의해야 한다.
p' = M2 * M1 * p 와 같이 변환이 이루어질 때,
계산은 뒤에서부터 진행된다는 것을 알고있자.
만약 M2가 Rotation이고, M1이 Translation이라면,
Translation이 먼저 일어나고, 그 다음에 Rotation이 일어나는 것이다.
[참고]
Interactive Computer Graphics: A Top-Down Approach with Shader-based OpenGL 6th edition / 저자: Edward Angel, Dave Shreiner / 출판사: Pearson Education
'IT > 컴퓨터 그래픽스' 카테고리의 다른 글
[ 3D Rotation ] 임의의 축으로 회전하기 (4) | 2020.12.04 |
---|---|
3D Geometric Transformation (0) | 2020.12.04 |
2D Geometric Transformation (0) | 2020.12.04 |
[ 3D Modeling ] Procedural Polygon Mesh (0) | 2020.10.24 |
[ 3D Modeling ] Sweep Representation (0) | 2020.10.24 |
댓글