...
서로 상하좌우로 연결되어있는 블럭들을 어떻게 인식해서 없앨까...
..
..
음... 닫힌영역을 알아내는 알고리즘을 찾으면 되겠다.. ㅎ
폐곡선안의 값을 알고 있어야 복사나 이동이 가능할것같은데, 마우스로 이미지를 클릭해가면서 폐곡선을 만들었을때 그안의 영역의 값을 얻어내는 루틴좀 알려주십시요...
제목과는 조금 다른 질문이군여... ^^
여기서 폐영역의 넓이를 알아야 할 필요는 없는거 같네여....
넓이가 필요하다면 적분을 해주면 되는거구여...(수치해석 참조)
여기서는 폐영역안의 좌표와 픽셀의 색깔값을 알면 가능한거 같은데여..
폐영역안에 어떠한 점이 존재하는지를 확인하는 방법으로 그래픽스에서
사용하는 알고리즘중에 가장 많이 쓰는 두 가지가 있습니다.
8방위 검색 방식과 주사선 스캔방식이 있습니다.
하지만 여기서는 주사선 스캔방식이 좋을거 같네여... 4방위나 8방위검색방식
한글로 쓰니까 약간 어투가 이상하게 들린다.. ^^
일단 영역안에 한점을 설정하여야 한다는 단점이 있는 반면에 빠른 속도를 자랑하죠
하지만 영역에 자동으로 점을 넣어주는 것은 상당히 힘듭니다.
눈으로 보면 쉽지만 자동(일반화)화 시킨다는 것은 다른 문제죠...
그럼 주사선 스캔 방식에 대해서 설명을 드리죠...
님께서 마우스로 어떤 폐영역을 그린다고 말씀 하셨는데.. 그때 설정하는 좌표를
먼저 배열이나 등등에 데이터로 저장하는게 처음으로 해야할 일입니다.
그 다음은 그 좌표들을(영역을 설정하는 좌표)들을 반시계 방향으로 다시 소트해야합니다. 사용자가 꼭 반시계방향으로 영역을 설정한다는 법은 없으니까여...
일반적으로 영역안에 존재하는 점들을 찾기위하여 만들어진 모든 알고리즘들이
일반화를 위하여 반시계방향의 영역에 대해서만 제대로 동작합니다.
수학적인 이야기는 빼고... --;;;
그리고, 정렬된 점을 가지고 CRgn의 폴리곤 모드로 리젼을 생성 시킵니다.
전 몇가지 문제점 때문에 개인적으로 만든적이 있는데...넘 복잡해여... --;;;
그리고, 마지막으로 해야할것이 무엇이냐면 0,0 좌표부터 1,0 2,0 3,0
처럼 좌에서 우로 하나씩 이동해가면 CRgn의 PtInRegion()함수에 대입하여
그 좌표가 영역 안에 있는지를 검사합니다.
만약 영역 안에 있는 점이라면 그 때의 좌표와 색깔을 특정하게 만든 배열이나
리스트에 저장하면 됩니다.
이처럼 TV에서 빔을 쏘는 것 처럼 좌에서 우로, 위에서 아래로 화면의 픽셀을
검사한다고 해서 주사선 검사 방식이라고도 하죠...
도움이 되셨나요? ^^
[질문 내용]***********************************************
올린이 : 김성제
마우스로 이미지위에서 원모양(임의대로 그린 폐곡선이죠)이나 기타 영역을 그려서 그영역을 복사나 이동하려고 합니다....말하자면 포토샵의 lasso기능과 같은 것이죠..
폐곡선안의 값을 알고 있어야 복사나 이동이 가능할것같은데, 마우스로 이미지를 클릭해가면서 폐곡선을 만들었을때 그안의 영역의 값을 얻어내는 방법(코드)좀 알려주십시요...
| ||||||||||||||||
|
'- 음악과 나 - > 『 짬 통 』' 카테고리의 다른 글
치코치코 v1 (0) | 2006.04.28 |
---|---|
전체화면 만들기. (0) | 2006.04.21 |
[스크랩] ♡API♡ API 전체화면 만들기 (0) | 2006.04.18 |
음.... 이제 공부는 끝. -_- (0) | 2006.04.18 |
CMapEditor.. (0) | 2006.04.17 |