- Cohen-Sutherland Line Clipping Algorithm?
이 알고리즘은 화면에 보이는 선이 화면 밖으로 나갔을 때 화면 밖의 선은 연산을 안하도록 막아줄 때
사용하는 알고리즘으로 1967년에 개발이 되었다고 한다.
알고리즘은 다음 여부에 따라 행을 포함, 제외 또는 부분적으로 포함 된다.
- 두 끝 점이 모두 화면 영역에 있을 때
- 두 끝 점이 모두 보이지 않는 영역을 하나 이상 공유하므로 선이 보이는 영역을 넘어 가지 않는다.
- 두 끝 점은 서로 다른 지역에 있고, 이런 상황의 경우 알고리즘은 화면 영역 외부에 있는 두 지점 중 하나를 찾는다.
그런 다음 바깥 점과 확장 된 화면 경계의 교차가 계산되고 이 새로운 점이 바깥 점을 대체하게 된다.
아래 그림의 숫자를 "아웃 코드"라고 한다.
Left | Central | Right | |
Top | 1001 | 1000 | 1010 |
Central | 0001 | 0000 | 0010 |
Bottom | 0101 | 0100 | 0110 |
라인의 두 지점 각각에 대해 아웃 코드가 계산이 되고, 아웃 코드는 2차원 클리핑을 위해 4bit, 또는 3차원인 경우에
6 비트를 가질 것이다. 점이 화면 밖에 있으면 첫 번째 bit는 1로 설정이된다.
2D 출력 코드의 비트는 상단, 하단, 오른쪽, 왼쪽을 나타낸다. 예를 들어,
아웃 코드 (1010)는 화면의 우측 상단을 가리킨다.
클리핑이 발생한 후 각 반복에서 끝 점에 대한 아웃 코드를 다시 계산 해야 한다.
그리고 Cohen–Sutherland 알고리즘은 직사각형 "클립 창"에서만 사용할 수 있다고 한다.
'Programming > Soft Renderer_2020' 카테고리의 다른 글
필수 코어 클래스를 관리하는 해당 컨테이너를 선택하여 GameEngine 구조 구성 (0) | 2020.05.14 |
---|---|
C++ 언어의 클래스와 구조체의 차이와 Math Library에서 구조체를 사용하는 이유 (0) | 2020.05.13 |
Simplex (0) | 2020.05.09 |
Convex 가 가지는 특징 (0) | 2020.05.09 |
Line, Ray, Line Segment 각각의 생성 조건은? (0) | 2020.05.09 |