윈도우가 씌어졌을 때 모든 그림을 다시 그릴것인가? 그렇지 않다.
윈도우 밖은 그릴 필요가 없다. 실질적으로 보이는 부분만 처리해준다.
view port 부분만 그리기
코헨-서더랜드 알고리즘
1) 선분의 양끝점의 영역 코드를 정함
2) 양끝점의 영역 코드가 모두 0000인 경우 -> Accept
3) 양끝점의 영역코드의 logical AND가 0000이 아닌경우 -> Reject
4) 윈도우의 경계와 교차하는 경우 -> 윈도우 경계에서 수직 또는 수평 분할
선분의 양 끝점이 (x1,y1) (x2,y2)
윈도우 각 방향 경계의 좌표값이 xl,xr,yb,yt
수직경계에 걸치는 경우
수평경계에 걸치는 경우
교점 계산 후 버려지는 경우가 많다는 단점
Liany-Barsky
1) u1 = 0, u2 = 1 로 초기화
2) xl교점 u구하기
3) yb교점 u구하기
4) xr교점 u구하기
5) yt교점 u구하기
6) u1과 u2를 대입하면 두 교점을 구할 수 있다.
Cascade하게 만들었기 때문에 효율적이다.
속이 빈 다각형 : 선 클라핑 알고리즘 적용
속이 찬 다각형 : 몇 개의 Closed filled polygon 생성
Sutherland-Hodgman 알고리즘
1) 각 윈도우 경계(상하좌우)에 대해 아래 알고리즘을 적용
2) Filed polygon을 배열로 표현
3) 4가지 경우로 구분해 다각형 꼭지점을 재구성
전체 문자 클라핑 : 문자가 완전히 뷰포트 내에 있는 텍스트만 출력
개별 문자 클라핑 : 문자가 완전히 뷰포트 내에 있지 않더라도 그 문자를 부분 클라핑하여 출력