-
Notifications
You must be signed in to change notification settings - Fork 369
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
geos::algorithm::hull::ConcaveHull::concaveHullByLength segfault #719
Comments
geosop -a "MULTIPOINT( 1139294.6389832512941211 8201313.5346954688429832, 1139360.8549531854223460 8201271.1898052766919136, 1139497.5995843114797026 8201199.9955425458028913, 1139567.7837303513661027 8201163.3485335074365139, 1139635.3942210066597909 8201119.9025274068117142 )" concaveHull -f wkt |
Here's a simpler reproducer:
It looks like the triangular "frame" that is created around the points to contain the evolving triangulation is too small, interfering with correct construction of the DT. Increasing the size of the frame fixes the problem. The open question is: how much of an increase is needed to handle all cases? The criteria for determining a safe frame size is that none of the frame vertices lie in a circumcircle of a triangle in the resulting DT. This means that the frame size is influenced by the nature of the triangulated points. In this case the triangulated points are almost collinear, which means the DT triangles are quite flat, and thus have large circumcircles. This is the source of the problem. Most (all?) Incremental DT algorithms gloss over this point. So this is a yet another example of how published algorithms often trivialize details which are key for producing a fully robust algorithm. |
In libgeos v3.11.0 the following code results in segfault.
Callstack:
This is what the multipoint looks like
The text was updated successfully, but these errors were encountered: