폴리곤 편집툴 v0.0

전산 2004/11/01 14:14

나를 폐인으로 만든..



예전 일주일을 버닝해 만들었던 폴리곤 편집 알고리즘을 버그를 잡기가 귀찮다는 이유로 CGAL 의 것으로 교체했다. 덕분에 주말내내 수학정의로 뒤범벅된 CGAL 매뉴얼을 껴안고 살았다. generic programming 의 궁극을 보여주는 CGAL 과의 사투를 보시라.. 점 하나 얻으려면 아래 삽질을 거쳐야 한다.

다면체< 연산커널< 연산라이브러리래퍼 > >::점


저 점으로 다면체를 구성하고 폴리곤을 구성한다. 연산 라이브러리는 기본적으로 GMP 것을 래핑한 것이 제공되는데.. 이걸 부동소수점으로 바꾸는데 약간 문제가 있더군. (generic 알고리즘이 버젓이 % 연산자를 사용한다..!! 뷁!!) 어쨌든 다면체에서 기하정보를 얻으려면 아래의 탐색기로 이터레이팅 해야한다.

다면체< 연산커널< 연산라이브러리래퍼 > >::탐색기::반복자 = 다면체::탐색기().반복자();


물론 탐색기가 뱉어내는 정보도 추상화되어 도저히 맨정신에는 알아먹기 힘든 정보이다. 대략 '엣지' '페이스' '세그먼트' '버텍스' 따위로 뼈와살을 분리해서 뱉어낸다. 저걸로 폴리곤을 재구성 하는데만 세월이 걸렸다.

어쨌든 주말을 온통 버닝한 끝에 Polygon Editor 를 만들었다. 아직 Hole (폴리곤 가운데 구멍이 뚫린것) 은 지원하지 않는다. 그리고 폴리곤을 분할해서 다수개의 폴리곤으로 만드는것도 지원하지 않음. 이건 이제 우선 집에 들어가서 샤워하고 한숨 잔 다음에 만들어야겠다.

아래에 주말 버닝의 결과를 올린다. 좌클릭은 폴리곤 그리기, CTRL 키를 누른 상태에서 그리면 폴리곤 제거, 우클릭은 그리고 있는 폴리곤의 단계적 취소, ESC 는 전부 취소, S 는 폴리곤 저장, L 는 저장된 폴리곤 로드, C 는 CLEAR , SHIFT 키를 누르는 것은 좌표고정 이다. (기능이 꽤 많다. 난 원래 UI 에 매우 민감해서 매우 user friendly 하게 interface 를 구현해 놓는다. ㅡ.ㅡ)



덧. 여담이지만 가장 시간이 많이 걸린 부분은 "Point 타입에서 x, y 좌표뽑기" 였다. (이게 말이 되냐~~!) 이거 하느라고 GNU Multiple Precision Arithmetic Library 라이브러리 매뉴얼 정독함. -_-;;"
2004/11/01 14:14 2004/11/01 14:14

트랙백 주소 :: http://testors.net/tt/trackback/227