[컴퓨터 그래픽스]Sutherland-Hodgman 다각형 클리핑
Sutherland-Hodgman 다각형 클리핑
I. 클리핑 방법
좌우하상에 대한 클리핑을 차례로 수행(차례로 == 파이프라인 방식 처리)
* OpenGL의 경우, 볼록다각형만 처리
* 주의: 오목 다각형을 클리핑하는 경우, 단순 다각형이 아닌 결과가 나올 수 있다.
각 클리핑 경계에 대한 처리 방법
다각형을 구성하는 변 단위로 정해진 순서(CW or CCW)에 따라 처리기에 입력
ex.
4가지 상황(CCW)
v1, v2
1. 시작점 - 클리핑 영역 외부(v1), 끝점 - 내부(v2)
출력 꼭짓점: v1'(경계), v2
2. 시작점, 끝점 - 모두 클리핑 영역 내부
출력 꼭짓점: v3
3. 시작점 - 클리핑 영역 내부(v3), 끝점 - 외부(v4)
출력 꼭짓점: v3, v3'(경계)
4. 시작점, 끝점 - 모두 클리핑 영역 외부
출력 꼭짓점 없음.
ex. 삼각형의 클리핑
좌측경계 | 클리핑 영역에 거쳐있는 삼각형 ABC
1단계: 좌측경계에 대한 처리
출력
선분 AB => 끝점 B만
선분 BC => 끝점 C만
선분 CA => 끝점 A만
=> 기존 삼각형과 같은 BCA
2단계: 우측경계에 대한 처리
선분 BC => 경계와의 교점 C'
선분 CA => 영역 밖이라 없음.
선분 AB => 경계와의 교점 A', B
=> 새로운 삼각형 C'A'B 생성
3단계: 하단경계에 대한 처리
선분 C'A' => 경계와의 교점 A'
선분 A'B => 경계와의 교점 B
선분 BC => 경계와의 교점 C'
=> 새로운 삼각형 A'BC' 생성
4단계:
선분 A'B => 경계와의 교점 A'', B
선분 BC' => 경계와의 교점 C'
선분 C'A' => 경계와의 교점 C''
=> 새로운 다각형 A''BC'C'' 생성