Open Graphics Library 4
1. Freeglut Object와 Rendering
- Freeglut Object: OpenGL에서 자주 사용되는 3D 객체들을 쉽게 렌더링할 수 있도록 제공하는 라이브러리로, 구, 정육면체, 원기둥 등을 기본 함수로 제공합니다.
- 예:
glutSolidSphere
,glutWireSphere
,glutSolidCube
,glutWireCube
- 예:
- Rendering 방식:
2. Homogeneous Coordinates (동차좌표)
- Point : 수학적으로 위치를 나타내는 요소
- Vertex : 다각형을 구성하는 기본 단위
- 동차좌표의 정의: 점
(x, y, z)
는 동차좌표로[x, y, z, 1]
로 표현됩니다. - 동차좌표의 사용 이유:
3. Affine Transformations (아핀 변환)
- 아핀 변환: 컴퓨터 그래픽에서 가장 흔히 사용되는 변환으로, 이동(Translation), 크기 조절(Scaling), 회전(Rotation), 비틀기(Shear) 등을 포함합니다.
- 아핀 변환의 특징:
- 행렬로 표현이 가능하며, 여러 변환을 하나의 행렬로 통합할 수 있습니다.
직선성
과평행성
이 보존됩니다.
Translation (이동 변환)
- 물체를 특정 방향으로 이동시키는 변환입니다.
- OpenGL에서는
glTranslatef(p, q, r)
함수를 사용하여 x, y, z 축 방향으로p
,q
,r
만큼 이동시킵니다.
Scaling (크기 변환)
- 물체의 크기를 확대하거나 축소하는 변환입니다.
- non-rigid-body transformation 입니다.
- Uniform Scaling: 모든 축에 대해 동일한 배율로 크기 변환.
- Differential Scaling: 하나라도 배율이 다름.
fixed point
가 존재합니다.- OpenGL에서
glScalef(u, v, w)
를 사용하여 x, y, z 축 방향으로 각각u
,v
,w
배만큼 크기 조절합니다.
Shear (전단 변환)
- x축 전단: 물체의 각 점의 x좌표가 y좌표에 따라 선형적으로 변화합니다.
- \( x’ = x + h \cdot y \), \( y’ = y \)
- h는 전단 인수 (shearing factor)입니다.
- y축 전단: x좌표는 변화하지 않고, y좌표가 x좌표에 따라 선형적으로 변화합니다.
- \( x’ = x \), \( y’ = y + g \cdot x \)
- g는 전단 인수입니다.
Rotation (회전 변환)
4. 3D 회전 (Rotation in 3D)
- 회전축: 회전은 특정 축을 기준으로 회전하게 되며, 이 축을 중심으로 점이 회전합니다. 회전축이 되는 점은 이동하지 않습니다.
- 오른손 법칙: 회전 방향은 오른손 엄지를 회전축으로 삼아 나머지 네 손가락이 감기는 방향, 즉 반시계 방향으로 회전합니다.
#### 축에 따른 회전
- z축 회전: 2D 회전처럼 x축과 y축 상의 좌표가 변하고, z축은 변하지 않습니다.
- \( x’ = x \cdot \cos(\theta) - y \cdot \sin(\theta) \)
- \( y’ = x \cdot \sin(\theta) + y \cdot \cos(\theta) \)
- \( z’ = z \)
- x축 회전: y축과 z축 상의 좌표가 변하고, x축은 변하지 않습니다.
- y축 회전: x축과 z축 상의 좌표가 변하고, y축은 변하지 않습니다.
#### OpenGL에서 회전
glRotatef(angle, x, y, z)
는 원점에서 (x, y, z) 방향으로 angle만큼 회전하는 행렬을 생성합니다.
5. 변환의 유형 (Types of Transformations)
유클리드 변환 (Euclidean Transformation)
- Rigid body transformation이라고도 하며, 객체의 크기와 모양을 유지하는 변환입니다. 크기 조절이나 변형은 일어나지 않습니다.
- 예: Translation, Rotation
Similarity 변환 (닮음 변환)
- 유클리드 변환에 스케일링이 추가된 변환입니다.
- 예: Translation + Rotation + Scaling
Affine 변환 (Affine Transformation)
- Translation, Rotation, Scaling, Shearing (전단), Reflection (반사) 등의 연산을 허용하는 변환입니다.
- Affine 변환의 특징: 직선성, 평면성, 평행성이 유지됩니다.
- Affine 변환의 조합: 두 개의 Affine 변환을 조합하면 또 다른 Affine 변환이 되며, 변환 행렬은 곱셈 순서에 따라 달라집니다.
- 직선은 변환 후에도 직선으로 남고, 평행한 직선들은 변환 후에도 평행을 유지합니다.
This post is licensed under CC BY 4.0 by the author.