[그래픽스] 클리핑 (Clipping)

윤정민·2022년 10월 16일
0

Graphics

목록 보기
14/22

1. 클리핑(Clipping)의 개념

윈도우가 씌어졌을 때 모든 그림을 다시 그릴것인가? 그렇지 않다.
윈도우 밖은 그릴 필요가 없다. 실질적으로 보이는 부분만 처리해준다.
view port 부분만 그리기

2. 클리핑 종류

2.1 점 클리핑

  • view port 내에 있는 점만 그리기

2.2 선 클리핑(Line clipping)

코헨-서더랜드 알고리즘
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구하기

  • (u가 0보다 크면 && u1<u라면) u1업데이트
  • u>1이면, break;

3) yb교점 u구하기

  • (u가 0보다 크면 && u1<u라면) u1업데이트
  • u>1이면, break;

4) xr교점 u구하기

  • (u가 1보다 작다면 && u2>u라면) u2업데이트
  • u<0이면, break;

5) yt교점 u구하기

  • (u가 1보다 작다면 && u2>u라면) u2업데이트
  • u<0이면, break;

6) u1과 u2를 대입하면 두 교점을 구할 수 있다.

Cascade하게 만들었기 때문에 효율적이다.

2.3 영역 클리핑

  • 속이 빈 다각형 : 선 클라핑 알고리즘 적용

  • 속이 찬 다각형 : 몇 개의 Closed filled polygon 생성

  • Sutherland-Hodgman 알고리즘

1) 각 윈도우 경계(상하좌우)에 대해 아래 알고리즘을 적용
2) Filed polygon을 배열로 표현
3) 4가지 경우로 구분해 다각형 꼭지점을 재구성

  • 시계 방향으로 다각형의 에지와 윈도우 경계가 만나는 점 구하기

2.4 텍스트 클라핑(Text Clipping)

  • 전체 텍스트 클라핑 : 텍스트 내용 모두 뷰포트 내에 있는 텍스트만 출력

  • 전체 문자 클라핑 : 문자가 완전히 뷰포트 내에 있는 텍스트만 출력

  • 개별 문자 클라핑 : 문자가 완전히 뷰포트 내에 있지 않더라도 그 문자를 부분 클라핑하여 출력

profile
그냥 하자

0개의 댓글