본문 바로가기
IT/컴퓨터 그래픽스

Homogeneous Coordinate

by 신인용 2020. 12. 4.
반응형

 

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를 비교해보자.

 

 

2D Geometric Transformation

 

 

 

Homogeneous Coordinates

 

Homogeneous Coordinates에서는 모두 3X3 matrix로 표현되었다.

Translation matrix가 다른 변환행렬과 같은 크기가 된 것이다. 

 

 

그래서 변환점은 다음과 같이 표현해줄 수 있다.

 

 

 

 

 

 

 

그러면 거꾸로 하는 건?

한 쪽으로 이동했으면, 반대편으로도 이동해야 하고

한 쪽으로 회전했으면, 반대편으로도 회전해야 하고

커졌다면, 줄어들기도 해야한다.

 

 

Inverse Transformations

 

반대의 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

 

반응형

댓글