본문 바로가기
코드

Cohen-Sutherland Algorithm for line clipping

by ehei 2006. 4. 16.

학교 숙제. 간단한 문제라고 생각했으나, 알고리즘과 실제는 좌표계가 달라 매우 혼동을 일으켰다.

 

게다가 Managed C++로 작성했는데 컨테이너도 익숙하지 않고 참조형 사용도 잘 안되어 매우 당황스러웠다. 참조형에 대한 이해가 필요하다 -_-; 이게 잘 안되어서 계속 배정으로 값을 넣을 수 밖에 없었다. 덕분에 코드가 참 할 말이 없다.... 이렇게 혼란스럽게 코딩해본 적은 처음인 것 같다. 좋은 경험을 했다.

 

알고리즘에 대한 쉬운 설명은 역시 위키피디아.

 

http://en.wikipedia.org/wiki/Cohen-Sutherland

 

알고리즘에 대한 자세한 이해는 여기로. 복잡해보여도 조금만 집중하면 쉽게 이해할 수 있다. 그리 어려운 알고리즘은 아니다. 기울기에 대한 지식만 있으면 된다.

 

http://www-static.cc.gatech.edu/grads/h/Hao-wei.Hsieh/Haowei.Hsieh/code1.html

 

아래 소스는 VS2005로 작성했으며, 실행하려면 .net 프레임워크 2.0이 설치되어 있어야 한다. 파이썬으로 작성하니 무지 쉽던데 -_-;

 


1145191303_Clipping.rar


1145281718_debug1.rar

실행에 필요한 어셈블리들. 닷넷 프레임워크 2.0를 설치해도 문제가 있을 경우 필요 -_-;;; 닷넷 환경을 만들기는 아직도 험난한 듯. 괜히 비스타에 채용되지 않은 게 아닌 거 같다. 차라리 WxPython을 쓸 걸 후회되는 부분...


1145281524_debug2.rar

이것도...

 

※ 위의 어셈블리는 실행 파일이 위치한 디렉토리에 복사하도록 설정하면 쉽게 얻을 수 있다

 

 

선을 그린 후, Clipping 버튼을 누르면 단계별로 클리핑하는 것을 보여준다.

뷰포트를 이동하려면 라디오 버튼을 조작하면 된다.




'코드' 카테고리의 다른 글

Java API for XML  (0) 2006.05.09
AJAX로 구현한 동적 웹사이트  (0) 2006.05.01
뷔퐁의 바늘  (0) 2006.03.29
AJAX 두번째 샘플  (0) 2006.03.22
틱택토  (0) 2006.03.21