UNIV
2022-04-03 04:47
컴퓨터그래픽스 - 4강. 컴퓨터 그래픽스 기본요소
원 그리기
- 원뿔곡선
- 원의 방정식
- 중심이 (xc, yc) 반경이 r인 원
- (x - xc)^2 + (y - yc)^2 = r^2
- 타원의 방정식
- 두 초점으로부터의 거리의 합이 일정한 점들의 집합
- 장축과 단축이 좌표축에 정렬된 방향에 놓인 경우
- 포물선의 방정식
- 한점 (초점) 과 하나의 직선(준선)과의 거리가 동일한 점들의 집합
- 쌍곡선의 방정식
- 두 점으로부터의 거리의 차가 일정한 점들의 집합으로 구성된 곡선
- 중심이 원점에 존재하며 횡단축이 x축과 일치하는 쌍곡선
원의 방정식
- 데카르트 좌표계에서의 원의 방정식
- (x - xc)^2 + (y - yc)^2 = r^2
원 그리기 알고리즘
- 원주상의 좌표 계산
- 중심 좌표가 (0,0) 인 원의 좌표들을 구한 후 (xc, yc)를 더하여 실제 좌표들을 구함
- 단위 x좌표 변화에 대한 y좌표 변화 크기가 1보다 작은 구간에서 원주상의 좌표를 구함
- x = 0부터 x = y가 되는 구간
- 원의 대칭성을 이용한 좌표 계산
중간점 원 그리기 알고리즘
- 판별 함수
- x^2 + y^2 < r^2 -> 원 내부의 점
- x^2 + y^2 = r^2 -> 원주 상의 점
- x^2 + y^2 > r^2 -> 원 외부의 점
F(x,y) = x^2 + y^2 - r^2
- F(x,y)
- < 0 원 내부의 점
- = 0 원주 상의 점
0 원 외부의 점
Mk+1 = (xk + 1, yk - 0.5)
- 판별 함수 값에 따른 다음 좌표 결정
- (xk+1, yk+1) 을 결정하기 위한 판별식
- (xk+2, yk+2) 을 결정하기 위한 판별식
- 판별식의 초기값 F(M1)
- P0 = (0, r), M1 = (1, r - 0.5)
- F(M1) = 1^2 + (r - 0.5)^2 - r^2 = 1.25 - r
- 다음 픽셀위치의 결정 및 판별식 갱신
void bresenham_circle (int xc, int yc, int radius) {
void circlePoints(int, int, int, int);
int F = 1 - radius;
int x = 0;
int y = radius;
circlePoint(xc, yc, x, y);
while (y > x) {
if (F < 0)
F += x * 2 + 3;
else {
F += (x - y) * 2 + 5;
y--;
}
x++;
circlePoint(xc, yc, x, y);
}
}
다각형 그리기
- 다각형이란?
- 세 개 이상의 선분으로 둘러싸인 평면 도형
- 모서리 (edge) 또는 변 (side): 다각형을 구성하는 선분
- 꼭짓점 (vertex)
- 세 개 이상의 선분으로 둘러싸인 평면 도형
- 단순 다각형
- 다각형의 변들이 꼭짓점에서만 만나는 다각형
- 블록 다각형과 오목 다각형
- 볼록(convex) 다각형: 모든 내각들이 180도 이하인 다각형
- 오목(concave) 다각형: 볼록하지 않은 다각형 (180도 이상인 내각이 존재)
- 볼록 다각형과 오목 다각형의 판별
- 꼭짓점들을 정해진 순서로 연결하는 벡터를 나열한 후 모든 두 인접 벡터 쌍의 외적을 구함
- 볼록 다각형: 모든 외적의 방향이 동일
- 오목 다각형: 일부 외적의 방향이 반대
다각형의 앞면과 뒷면
- 앞면을 정하기 위한 꼭짓점 나열 순서
- 시계 반대방향 (ccw) 순서
- 시계 방향 (cw) 순서
- 홀-짝 규칙
- 판별하고자 하는 점으로부터 다각형 외부의 점을 잇는 선과 다각형의 변이 교차하는 횟수가 홀수면 내부, 짝수면 외부로 판단함
- 주의: 판별을 위한 선이 다각형의 꼭짓점을 교차하는 경우 올바른 판별이 이루어지지 않을 수 있음
Open GL의 다각형 그리기
- 다각형의 종류를 지정하는 상수 사용
- GL_TRIANGLES
- GL_TRIANGLE_STRIP
- GL_TRIANGLE_FAN