문제

GNU Triangulated Surface Library로 제한된 Delaunay 삼각 측량을 수행 할 때 간헐적으로 어설 션 오류가 발생합니다. 나는 다음을 각각 다른 시간에 보았다.

Gts : ERROR : cdt.c : 974 : remove_intersected_vertex : 코드에 도달하면 안됩니다. Gts : ERROR : cdt.c : 896 : remove_intersected_edge : 어설 션 실패 : (다음) Gts : ERROR : cdt.c : 887 : remove_intersected_edge : 어설 션 실패 : (o2== 0.)

cdt.c를 살펴 봤지만 내가 알아낼 수 있었던 것은 gts_delaunay_add_constraint에 대한 호출에서 오는 것뿐입니다.

누군가가 이러한 주장이 실패하게 만드는 제약 조건의 문제를 설명 할 수 있습니까?

임의의 정점 세트에서 삼각 측량을 시도 할 때 어설 션 실패가 발생합니다. 불행히도 많은 수의 정점과 제약 조건에서만 발생하므로 실패한 입력에 대한 패턴을 파악하기가 어렵습니다. GTS를 사용하는 코드는 잘못된 입력에도 충돌하지 않아야하므로 이러한 어설 션 실패를 방지하는 것이 좋을 것입니다. 그렇지 않으면 어설 션을 비활성화해야합니다.

수정 : 모든 교차 제약 조건 제거 시도 (edges에 저장 됨) : 라코 디스

여전히 동일한 주장 오류가 발생합니다.

도움이 되었습니까?

해결책 2

<인용구>

GTS를 사용하는 코드는 잘못된 입력에도 충돌하지 않아야하므로 이러한 주장 실패를 방지하는 것이 좋을 것입니다. 어설 션을 비활성화합니다.

나는 결국 GTS가 어설 션 실패에 도달했을 때 멈추는 대신 예외를 던지도록하는 패치를 작성했습니다.패치는 여기 에 있습니다.

다른 팁

정점과 제약 조건을 완전히 무작위로 만드는 경우 서로 교차하는 제약 가장자리를 제공 할 수 있다고 생각합니다.어떤 경우에는 삼각 측량 루틴이 불평 할 것으로 예상합니다.

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