동차좌표 (Homogeneous Coordinates)
OpenGL에서의 동차좌표계는 4x4의 3차원 좌표 행렬을 4개의 수로 줄인 것입니다.
실제로 OpenGL에서는 4차원으로 연산이 이루어지는데 바로,
(x, y, z, w)
- x : x좌표
- y : y좌표
- z : z좌표 (우리가 흔히들 아는)
- w : 점인지 선인지 표현 (0은 벡터, 1은 점)
의 요소로 이루어진 동차좌표계를 사용합니다.
3개의 좌표만으로는 점인지 선인지 알 수 없기 때문에 네번째 요소인 w를 사용하여 4차원으로 구별합니다.
이 동차좌표계는 3차원의 모든 상황들을 표현할 수 있습니다.
1차원 점 : (x, 0, 0, 1)
2차원 점 : (x, y, 0, 1)
3차원 벡터 : (x, y, z, 0)
이런 식으로 표현할 수 있습니다.
동차좌표를 사용하는 이유는 시점으로부터 방향이 중요하기 때문입니다.
- OpenGL에서 표현되는 공간은 우리 눈에 보이지 않더라도 앞과 뒤의 구분이 있다는 것입니다. 그렇기 때문에 점과 벡터의 구분이 필요합니다. -> 동차좌표계 사용
- 동차좌표계가 있음으로 오브젝트의 이동을 행렬간의 곱셈으로 표현할 수 있습니다.
- 제가 써놓고도 읽으시는 분들이 헷갈리실 수 있겠다는 생각이 드네요...
컴퓨터 그래픽스에서는 동차좌표의 마지막 요소를 Scale Factor로 사용할 수 있으며, 만약 어떤 점의 좌표를 (x, y, z, w)로 표현했다면 실제 3차원 좌표의 값은 (x/w, y/w, z/w)로 될 수 있습니다.
동차좌표계를 이용한 이동, 회전, 크기변환
이동변환
크기변환
회전변환
- x축 회전
- y축 회전
- z축 회전
'Graphics > OpenGL' 카테고리의 다른 글
glModelView Matrix (0) | 2014.05.27 |
---|---|
glPush, PopMatrix, Ortho 등 (0) | 2014.05.27 |
glutGameModeString, EnterGameMode 등 (0) | 2014.05.27 |
OpenGL 기초 - GLUT : Win32 예제 (0) | 2014.05.27 |
OpenGL 기초 - GLUT : 애니메이션 (0) | 2014.05.27 |