일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Airflow
- os.path
- blinker
- slicing [::-1]
- timestamp
- sort(reverse=True) v.s. reverse
- S3
- functools.wraps
- Python
- pandas
- selenium-wire
- 고차함수
- 쿼리
- 함수형 프로그래밍
- r-string
- 코딩 테스트
- OS
- ds_store
- reverse v.s. reversed
- 순수함수
- [초급(예비) 개발자 오픈소스 실무 역량강화 교육]
- PIP
- decorator
- boto3
- sort v.s. sorted
- CI/CD
- 생각
- Today
- Total
공부일지
[컴퓨터 그래픽스]Cohen-Sutherland 선분 클리핑 본문
Cohen-Sutherland 선분 클리핑
I. 전제
끝점의 영역코드
b3 |b2 |b1 |b0
상 하 우 좌
b0 = {1 if x < xwmin
{0 if x >= xwmax
b1 = {1 if x > xwmax
{0 if x <= xwmax
b2 = {1 if y < ywmin
{0 if y >= ywmax
b3 = {1 if y > ywmax
{0 if y <= ywmax
II. 조건
조건1. rc1 or rc2 = 0
=> 둘 다 0인 부분(안)에 있어야 0 나옴
ex. 0000 안에 두 점이 있는 선분
조건2. rc1 and rc2 =/= 0
=> 둘 다 0 아닌 부분(밖)에 있어야 0 아니라고 나옴
ex. 1000, 0001 연결된 선분
조건3. (rc1 = 0, rc2 =/= 0) 또는 (rc1 =/= 0, rc2 = 0)
=> 한쪽은 0인 곳(안)에, 한쪽은 0 아닌 곳(밖)에 있음
ex. 1000, 0000 연결된 선
조건4. rc1 =/= 0, rc2 =/= 0, (rc1 and rc2) = 0
=> 둘 다 0 아닌 곳(밖)에 있지만, 0인 곳에 거쳐 있다.
* 영역코드만으로 판단할 수 없음,
교차하는 경계를 선택하여 클리핑한 후 다시 처리(반복을 통한 처리 필요)
ex. 0001, 0100 연결된 선분
영역코드들(0000 상하우좌, 0상 0하 0우 0 순)
1001 | 1000 | 1010
0001 | 0000 | 0010
0101 | 0100 | 0110
조건 1: 다 그려야 함
조건 2: 안 그려도 됨
조건 3, 4: 거쳐있는 부분을 클리핑해서 재처리 필요
III. 선분과 클리핑 경계 교점 계산
* 핵심: 선분과 기울기
1. 수직 경계와의 교점
ex.좌측 경계
왼쪽 밖: (xs, ys)
오른쪽 경계 안: (xe, ye)
x = xwmin 또는 xwmax
=> y = ys + m(x - xs)
좌측 경계이면 x값에 xwmin 대입
우측 경계이면 x값에 xwmax 대입
2. 수평 경계와의 교점
ex. 아래쪽 경계
아래쪽 밖: (xs, ys)
위쪽 안쪽: (xe, ye)
=> x = xs + (y-ys)/m
IIII. 문제점
교차하는 경계가 여러 개일 경우 클리핑을 반복해야 함.
ex. 1001, 0100 연결된 선분
좌측경계부터 좌 -> 우 -> 하 -> 상 경계별로 클리핑해야함.
선분이 거치는 경계 개수 = 클리핑 횟수
'Computer > 공부정리' 카테고리의 다른 글
[컴퓨터 그래픽스]Sutherland-Hodgman 다각형 클리핑 (0) | 2025.05.03 |
---|---|
[컴퓨터 그래픽스]Liang-Barsky 선분 클리핑 (0) | 2025.05.03 |
[코딩 테스트]입력방식 비교 - sys.stdin.readline() v.s. open(0).read().splitlines() (1) | 2025.04.25 |
[Python]sys.argv 활용으로 main 함수와 test 함수 분리해서 쓰기 (1) | 2025.04.23 |
[AI]ChatGPT memory, reference Chat History, Archive chats에 관한 내용 (0) | 2025.04.17 |