본문 바로가기

채우기

(3)
여러 포인트를 찍어 폴리곤 채우기 구현 시도기, 마지막 날. 몇가지 잘못 구현된 부분을 수정 하고, 간략화 하여 어느정도 복잡도를 가지는 영역 내를 채우는 것을 성공리에 완성 하였습니다. 아직 테스트를 해 보면 매우 복잡한 영역은 여전히 node 에서 잘못 처리되는 경우가 발견 되긴 합니다만, 이 부분은 다음 구현으로 넘기고 이번엔 완료된 것을 통해서 약간의 알고리즘 설명을 남겨 보도록 하겠습니다. 먼저 참고한 알고리즘은 Darel Rex Finley 라는 사람의 페이지를 통해서 입니다. Polygon fill algorithm 알고리즘은 알고나면 꽤 간단 합니다. 먼저, 삼각형을 하나 그린다 치면, 아래 처럼 좌표계가 만들어 지고, 이 좌표계는 vector 에 차곡 차곡 쌓이게 됩니다. 여기서 vector 는 0번째와 마지막 이 ..
여러 포인트를 찍어 폴리곤 채우기 구현 시도기, 둘째날. 이전에 polygon 내 fill 을 하기 위한 알고리즘을 파다, 여러 개선점을 찾기 위한 노력을 통해 답을 찾기 시작 하고 있습니다만, 현재 fill 을 실패 하는 이유를 찾기 위해 돌려 보고 있다 보니, 아래처럼 node 가 짝이 안맞는 경우가 생기는 것을 알았습니다. 최적화된 알고리즘 검출을 위해 re-order 등을 수행하는데도, 검출에 실패 하는 영역이 나오는 것을 보면, 이것은 다른 알고리즘을 찾아야 할 것으로 보입니다. 현재까지 돌려 본 것을 압축해서 올려 봅니다.코드 및 CBP, 디버깅용 바이너리 파일 압축본 다운로드 필요사항: Code::Blocks, MinGW-W64, FLTK-1.3.4 (또는 FLTK-1.3.4-TS).
여러 포인트를 찍어 폴리곤 채우기 구현 시도기, 첫쨋날. librawprocessor 에 새로 끼워 넣고 싶은 기능 중 하나가, 바로 포토샵 같은데서 자주 쓰는 그물망 기능인가 하는 겁니다, 여러 포인트를 찍어 그 영역 안을 구하는 것. 그래서 그걸 FLTK 로 간단히 만들고, 내부 알고리즘은 다음 URL 을 통해 한번 구현을 해 보기로 했습니다.http://alienryderflex.com/polygon_fill/ 해당 싸이트엔 C 로 간단히 되어 있는걸 C++ 로 좀 더 복잡하게 변경 하여 만들어 보니 ... 간단한 벡터 그래픽 영역은 처리가 되는 것 같습니다만 ... 복잡도가 올라가면 실패를 합니다. 아직 이유는 알아 내야 하는 부분이 많습니다만, 현재 odd-even 검사 부분이 뭔가 누락이 되었다거나, conflict 영역 검출 등은 뭔가 원래 소스대..