문제

2D로 정의 된 암시 적 스칼라 필드가 있습니다. 2D의 모든 지점에 대해 정확한 스칼라 값을 계산할 수 있지만 다소 복잡한 계산입니다.
나는 그 표면의 등방선을 그려서 '0'값의 선을 말하고 싶습니다. 함수 자체는 연속적이지만 '0'이소 라인은 여러 연속 인스턴스를 가질 수 있으며 모두 연결되어 있음을 보장하지는 않습니다.
각 픽셀의 값을 계산하는 것은 옵션이 아닙니다. 몇 초가 걸리기 때문에 너무 많은 시간이 걸리기 때문에 가능한 한 실시간이어야합니다.

내가 현재 사용하고있는 것은 일종의 쿼드 트리로 생각할 수있는 재귀적인 공간 부서입니다. 나는 공간의 초기, 매우 거친 샘플링을 취하고 양수에서 음수 값으로의 전환이 포함 된 사각형을 발견하면 그것을 4 개의 작은 사각형으로 재귀 적으로 나누고 다시 확인하여 픽셀 레벨에서 멈 춥니 다. 양의 음성 전이는 4 개의 코너에서 sqaure를 샘플링하여 검출됩니다. 그렇지 않은 경우를 제외하고는 상당히 잘 작동합니다. 전환 감지가 가장자리의 작은 영역에서 발생하고 사각형의 모서리를 건너지 않는 전이에 실패하기 때문에 그려진 이소 라인은 때때로 절단됩니다.

이 설정에서 이소 라인 드로잉을 수행하는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

여기에 설명 된 알고리즘으로 많은 성공을 거두었습니다. http://web.archive.org/web/20140718130446/http://members.bellatlantic.net/~vze2vrva/thesis.html적응 형 윤곽선 (설명하는 것과 유사 함) 및 일반적으로 윤곽 줄거리와 관련된 다른 문제에 대해 토론합니다.

모든 픽셀을 보지 않고 함수의 모든 윤곽을 찾는 것을 보장하는 일반적인 방법은 없습니다. 기능이 일반적으로 음수 인 영역에서는 기능이 양수 인 픽셀 크기에만 영역이있는 매우 작은 닫힌 윤곽이있을 수 있습니다. 양성 영역 내에 샘플을 배치하기에 충분히 샘플을 샘플링하지 않으면 그것이 존재한다는 것을 알 수있는 일반적인 방법이 없습니다.

기능이 충분히 부드러워지면 기능의 모듈러스가 주변 지역에서 작아지기 때문에 그 작은 닫힌 윤곽이 어디에 있는지 추측 할 수 있습니다. 그런 다음이 지역에서만 샘플링을 개선 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top