본문 바로가기
C/C++/물리

좌표계

by 꿀꿀이냐옹이 2009. 10. 7.
반응형

3차원 공간에서 물체의 위치는 주어진 좌표계(coordinate system)를 기준으로 표시된다.


 - 원기둥 좌표계(cylindrical coordinate system)

 - 원구 좌표계(spherical coordinate system)

 - 직교 좌표계(cartesian coordinate system) : 원점의 위치, 축 방향, 축 눈금의 길이 등에 의해 정의


모델링 편의에 따라 여러가지 좌표계를 사용할 수 있으나 가장 많이 사용되는 것은 직교 좌표계이다.

 

 

3차원 직교 좌표계는 그림처럼 서로 직각으로 교차하는 3개의 좌표축 벡터(Coordinate Axis Vectors)로 이루어진다. x, y, z 축의 방향은 일반적으로 오른손 법칙을 따른다. 오른손 법칙에 따르면 그림과 같이 +x 축에서 +y 축 끝을 향해서 오른손 주먹을 말알 쥐었을 때 엄지 방향이 +z 축이다. 오른손 좌표계에서 z 축이 반대 방향으로 향하는 것이 왼손 좌표계이다.

 

 

기반벡터

자신의 합성에 의해 다른 모든 벡터를 표시할 수 있는 벡터이다.

 

 

그림에서 점 p를 향한 벡터는 직각으로 교차하는 2개의 벡터 V1, V2의 합으로 표시할 수 있다. 일단 그림의 V1 벡터를 (b)에서처럼 일치시킨 후 4배를 곱하고, V2 벡터를 일치시킨 후 2배를 곱한다. 

    p = (4 * V1) + (2 * V2)

 

이처럼 자신의 합성에 의해 다른 모든 벡터를 표시할 수 있는 벡터를 기반 벡터라고 한다. 기반 벡터들끼리는 선형 독립(linear independence)이어야 한다. 어떤 벡터가 다른 벡터의 선형 조합(linear combination)으로 표현된다면 이는 선형 독립이 아니다. 즉, 기반 벡터 관계가 아니다.
 - 선형 조합(linear combination) 이란? 벡터에 스칼라 곱한 것의 합

3차원에서 V1, V2, V3를 기반 벡터 후보로 삼았을 때, V3 = 12V1 + 3V2가 성립된다면, V3는 기반 벡터가 될 수 없다. 공간 상에서 서로 직각으로 교차하는 벡터(직교 벡터)는 선형 독립이다.
 - 차원(dimension) : 점의 위치를 표현하기 위한 기반 벡터의 수
점의 좌표는 기반 벡터를 기준으로 나타내는 것으로서 각각의 기반 벡터에 곱해지는 계수가 좌표다. 이 경우 기반 벡터는 좌표축에 해당된다.
 - 계수 : 기호 문자와 숫자로써 된 곱에서, 숫자를 기호 문자에 대하여 일컫는 말
 
벡터 v = 4 V1 + 2 V2 + V3
 - 기반 벡터만으로 표시 가능

벡터 p = 벡터 p’ 
 - 벡터에 점을 추가한 것이 어파인 공간이다.
 - 따라서 어파인 공간에서는 기반 벡터를 서로 흩어놓을 것이 아니라 시작 위치를 한 점에 고정할 필요가 생긴다. 이것이 바로 원점(origin)이다.

 

좌표계

 


원점(어파인 공간에서 기반벡터 시작점을 일치시킨 곳)과 기반벡터로 구성되는 프레임이다.
예) 3차원 좌표계 = (r, V1, V2, V3)

 

점 p = r + 4V1 + 2V2 + V3

 - 점 p는 원점 r의 위치에 따라 다른 좌표를 갖게 되므로 원점 위치에 영향을 받는다.

 - 임의 점에서 점 p를 향한 벡터 = 임의 위치에서 원점 r로 가는 벡터와, r에서 p로 가는 기반 벡터의 조합으로 합성한 것이다.

 

벡터 : v = 4 V1 + 2 V2 + V3
점 : P = r + 4V1 + 2V2 + V3  

 - 벡터 v는 방향과 크기만 같으면 동일한 것이므로 원점 위치에 영향을 받지 않는다. 반면 점 p는 원점 r의 위치에 따라 다른 좌표를 갖게 도므로 원점 위치에 영향을 받는다.

 

동차좌표

 - 공간에서 점과 벡터를 모두 동일한 방식으로 표현하기 위해 고안된 좌표 
 - 벡터냐 점이냐에 따라 표현 방식이 달라져야 하는 문제를 해소하기 위해 차원을 높여서 표현한 좌표
 - 3차원의 경우, 3차원 좌표를 3개의 요소로 표시할 것이 아니라 차원을 하나 올려서 4개의 요소로 표현한 것(cf. 2차원 동차좌표는 3개의 요소로 표현)

 - 차원을 하나 올리면 동일 방법으로 표현


v = 4 V1 + 2 V2 + V3  + 0 * r = (4, 2, 1, 0) : 벡터
P = 4V1 + 2V2 + V3 + 1 * r  = (4, 2, 1, 1) : 점

 

 - 만약 우리가 0 * r = 0으로, 1 * r = r이라고 정의하기만 하면 벡터 v는 (4, 2, 1, 0)으로, 점 p는 (4, 2, 1, 1)로 표시할 수 있다. 이처럼 동차좌표는 3차원 좌표를 4개의 요소로 표시한 것으로서 마지막 요소가 0인 벡터를, 그렇지 않고 1이면 점을 의미하도록 한 것이다. 이렇게 함으로써 벡터와 점을 동일한 방법으로 표현할 수 있게 된다. 수학적으로 이는 3차원에서 4차원으로의 사상(Mapping)이다.

2차원 평면상의 점(1, 2)를 동차 좌표로 표시하면 3차원 점 (1, 2, 1)이 된다. 이는 3차원으로 말하면 z축으로 높이 1의 위치에 있는 점에 해당한다. 2차원 평면 상의 점을 3차원 공간 상의 직선으로 사상한 것이 동차 좌표이다. 원점에서 출발하여 (1, 2, 1)을 통과하는 직선상에 놓인 모든 3차원 좌표가 동일한 2차원 점(1, 2)를 의미한다. 즉, (1, 2, 1) = (2, 4, 2) = (3, 6, 3) = (4, 8, 4) = (10, 20, 10) = …

 

 

 

3차원 점 (1, 2, 4)
 - 4차원 동차 좌표로 사상
 - 동차 좌표 (1, 2, 4, 1) = (2, 4, 8, 2) = (3, 6, 12, 3) = …
 - 동차 좌표 (x, y, z, w) => 3차원 좌표 (x/w, y/w, z/w)
 * 동차 좌표의 마지막 요소로 앞 요소를 나눈 값이 실제 좌표가 된다.
 - 컴퓨터 그래픽스에서는 모든 좌표를 동차 좌표로 표시
 - 3차원 그래픽 파이프라인 하드웨어는 동차 좌표 처리를 위해 한 번에 4개의 요소를 입력하고 처리할 수 있도록 설계

반응형

'C/C++ > 물리' 카테고리의 다른 글

유클리드공간 [Euclidean space]  (0) 2009.10.08
피타고라스의 정리 [Pythagorean theorem]  (0) 2009.10.07
어파인 공간(Affine Space)  (0) 2009.10.07
벡터(vector)  (0) 2009.10.07
스칼라(scalar)  (0) 2009.10.07

댓글