Why does isInterior of Delaunay Triangulation fail if I remove a point constraint between two colinear constraints

1 view (last 30 days)
When generating a Constrained Delaunay Triangulation object (CDT for short), any points that fall on a constraint split the constraint. This was not a problem since the 'handedness' of the constraints remained the same, i.e. counterclockwise ordered constraints represented exterior constraints, and conversely, clockwise ordered constrained represented holes. The function isInterior(CDT) on the new grid matched my expectations.
When removing points from a CDT, I employed the following code.
CDT.Points(K,:)=[]
This always worked as expected for any points interior or exterior to constraints. However, when I remove the splitting constraining points , isInterior(CDT) produces strange results. Sometimes the isInterior remains correct, but other times, it will make everything exterior EXCEPT holes, for example. The resulting CDT has constraints that look when plotting; a quiver did not have lines tracing all through the figure.
This took me quite a long time to debug in my code since it happens randomly in simulations. I don't like my workaround: test the grid over every constraint edge for collinearity, then test then if on the edge, remove any XY points that pass the tests. This process takes a long time since I have between 1 million and 100 million grid points, and between 500 ~ 10,000 constraint edges.
Any insights why a CDT will return unexpected isInterior tests?

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!