윈도우 - 뷰포트 변환의 경우 윈도우 영역 밖의 그림은 제거되고 영역 내의 그림만 뷰포트 변환되어 출력된다. 래스터 그래픽스의 경우 외부 영역의 픽셀을 제거하여 간단히 처리하지만 벡터 그래픽스의 경우 영역 외부의 그림을 제거하는 별도의 처리과정이 필요하다.
클리핑 알고리즘을 이용하여 주어진 영역 밖의 그림을 절단하여 제거하는 과정을 알아보자
클리핑 종류
그래픽 장면에 대하여 윈도우 -뷰포트 변환을 할때 다양한 객체에 대하여 클리핑을 해야한다.
래스터 그래픽스의 경우 모든 객체가 픽셀로 이루어져 있으므로 점에 대한 클리핑을 수행 하면 된다.
벡터 그래픽스에서는 많은 경우 다각형 영역에 대해 클리핑이 사용되지만 점이나 선에 대하여 클리핑을 수행하는 경우도 있다. 그러므로 점 클리핑, 선클리핑, 영역 클리핑, 텍스트 클리핑으로 나눠본다.
윈도우 - 뷰포트 변환을 할 때 클리핑을 적용하는 시점에 따라 월드좌표 클리핑과 뷰포트 클리핑이 있다.
윈도우 - 뷰포트 변환을 하기 전 월드좌표계에서 윈도우 영역 밖의 그림을 제거하는 것 -> 월드좌표 클리핑
윈도우 - 뷰포트 변환 후 뷰잉좌표계에서 뷰포트 밖의 그림을 제거하는 것 -> 뷰포트 클리핑
두 결과는 동일하지만, 월드좌표 클리핑 적용시 객체의 수가 감소하므로 전체 계산량이 줄어든다.
점 클리핑
래스터 그래픽스에서 모든 객체는 픽셀로 이루어져 있으므로 점 클리핑(Point Clipping)이 적용된다.
백터 그래픽스에서도 객체가 점으로 구성되어 있는 경우 점 클리핑을 적용하며, 선분이나 다각형인 경우에도 우선 끝점이나 꼭짓점에 대하여 윈도우 영역의 내부인지 여부를 판단하여야 한다. 직사각형 모양의 윈도우 영역에서 양 끝점(xL,yB)와 (xR, yT)인 경우에, 점P(x, y)가 윈도우 영역 내부에 있으려면 다음 조건을 만족하여야 하며 그 밖의 점들은 그림에서 제거
선 클리핑
선 클리핑(Line Clipping)에서는 선분의 양 끝점의 좌표 값으로부터 클리핑 여부를 판단한다.
1. 양 끝점이 모두 윈도우의 안쪽에 있으면 선분 전체가 윈도우 내에 포함된다.
2. 한 점은 윈도우 영역 안에 있고 다른 점은 밖에 있다면 선분이 윈도우에 걸쳐 있는 경우이므로 클리핑을 수행하여 선분을 절단한다.
3. 양 끝점이 모두 밖에 있는 경우 선분 전체가 항상 밖에 있는 것은 아니므로 교차점을 구하여 클리핑을 해야 한다.
선 클리핑 알고리즘 중 Cohen-Sutherland 알고리즘이 간단하면서도 많이 사용된다.
Cohen-Sutherland 알고리즘
Cohen-Sutherland 알고리즘 에서는 영역 코드라는 개념을 사용하여 선분과 윈도우 영역과의 교차여부를 판단한다.
1. 전체 평면을 9개의 영역으로 구분하여 4비트의 코드를 각각 할당한다.
2. 영역 코드에서 각 비트는 윈도우를 기준으로 상하좌우 어느 쪽에 위치한 영역인지를 나타낸다.
ex) 윈도우 왼쪽에 위치하면 영역비트1의 값을 1, 오른쪽이면 비트 2, 아래면 비트 3, 위면 비트 4의 값을 각각 1로 설정
ex) 오른쪽 위에 있는 영역은 비트 2와 비트 4의 값을 1로 설정하므로 영역 코드가 1010
ex) 아래쪽 가운데 영역은 비트 3만 1로 됨으로 영역 코드가 0100
영역비트
비트 4 | 비트3 | 비트2 | 비트1 |
영역 코드
1001 | 1000 | 1010 |
0001 | 0000 | 0010 |
0101 | 0100 | 0110 |
- 작성중
'Computer Graphics' 카테고리의 다른 글
Chapter 03 WebGL과 그래픽스 응용 소프트웨어 (1) | 2023.03.09 |
---|---|
Chapter 02 컴퓨터 그래픽스 시스템 (0) | 2023.02.20 |
Part 1 그래픽스 시스템의 개요 (0) | 2023.02.16 |
CG12 - 윈도우와 뷰포트 (0) | 2022.05.23 |
CG11 - GUI와 대화식 입력 기법 (0) | 2022.05.20 |
댓글