Fix a bug in point-in-polygon kernel: if the point is collinear with an edge, result is asserted false #1108
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes #1103, current algorithm tests if the test point is collinear with an edge of the polygon, the point is asserted to be on the edge. This is not true, because for a point to be on the edge, the point also needs to be within the range where the edge covers. Collinearity test only test if the point is covered by the line that the edge coincides.
This PR fixes this bug by adding additional tests to guarantee that the point is on an edge iff the point is collinear with the line where the edge coincides as well as the x coordinate of the point is within the closed range of the edge's x coordinates.
This PR also fixes an additional bug where the col-linearity flag is not reset after each iteration of a ring.
Checklist