1.

*출처 OpenGL로 배우는 컴퓨터 그래픽스 주우석/한빛미디어

 

 

동차 좌표란 개념이 왜 생겼나?

 

V =     a*Vx + b * Vy + c * Vz    ->    Vector V 

P = r + a*Vx + b * Vy + c * Vz    ->    Vertex P 

 

원점 r 에 관한 정보를 제외 시켜버리면 벡터 V 와 정점 P 는 모두 ( a, b, c ) 이므로

이 둘을 구분할수 없다. 이러한 불편을 해소시키기 위한것이 동차 좌표 개념이다.

이는 3차원 좌표를 3개의 요소로 표시할것이 아니라 차원을 하나 높여 4개의 요소로 표현하자는

것이다.

 

* 여기서 r 은 임의 위치에서 원점 을 가르키는 벡터다. 즉 원점이라 할수 있다.

 

=  a * Vx + b * Vy  + c * Vz + 0 * r       ->      Vector V 는 ( a, b, c, 0 )

P = a * Vx + b * Vy  + c * Vz + 1 * r       ->        Vertex P 는 ( a, b, c, 1 )

 

즉 마지막 요소 가 0 이면 Vector를 나타내고,

마지막 요소가 1이면 정점을 의미 하도록 한것이다.

 

이렇게 함으로써 Vector와 정점을 동일한 방법으로 표현할수 있다.

 

 

 

 

 

좀더 쉽게 접근하기 위해 차수를 내려 2차원 평면의 예를 들어보자.

2차원 평면상의 점 ( 1, 2 ) 를 동차 좌표로 표시하면 ( 1, 2, 1 ) 이 된다.

이는 3차원으로 말하면 Z 축으로 높이 1 의 위치에 있는 점에 해당된다.

 

엄밀히 말해 2차원 평면상의 점을 3차원 공간 상의 직선에 사상( mapping ) 시킨 것이 동차 좌표다.

다시 말해 원점에서 출발해 ( 1, 2, 1 )를 통과하는 모든 3차원 좌표가 동일한 2차원 좌표 ( 1, 2) 를

의미한다.

 

즉 ( 1, 2, 1 ) =  ( 3, 6, 3 ) = ( 4, 8, 4 ) 이 된다.

 

따라서 동차 좌표의 마지막 요소로 앞 요소를 나눈 값이 실제 3차원 좌표가 된다.

 

같은 맥락에서 만일 3차원 동차 좌표를 4차원 ( x, y, z, w ) 좌표로 표시되면 3차원 실제 좌표는

( x / w, y / w, z / w )가 된다. 즉 ( 1, 2, 4, 1 ) = ( 2, 4, 8, 2 ) = ( 5, 10, 20, 5 ) 이며

w = 0 일 경우 그 자체가 Vector ( x, y, z ) 를 나타낸다.

 

 

2.동차좌표계(Homogeneous Coordinates) 간단한 정리

 

좌표계 차원을 n 이라 할때, n개로 이루어진 좌표 만으로는

표현할 수 없는 요소가 있으며 그 한계를 극복하기 위해

n + 1로 표현한 좌표계를 동차 좌표계 (Homogeneous Coordinates) 라 한다.         

 

- n + 1 좌표계에서는 논리상으로 어떤 무한대에 해당하는 좌표 영역이 있을때

특정 점 nx / 0 을 통해 어떤 점을 무한대로 표현할 수도 있다.

 

- Perspective Projection 할 시에 n 차원의 좌표계는 모니터 좌표계로 변환이

되며, 이 경우 거리 축의 거리에 따라 특정 위치의 Vertices는 크기 및 위치가

연산 되어 져야 하며 이때 사용되는 것이 동차좌표계 (Homogeneous Coordinates)의

w 다. 즉, 각각의 n 차원 좌표들을 w로 나누어 적용시킨다.


반응형

+ Recent posts