[jira] [Comment Edited] (LUCENE-8257) GeoComplexPolygon fails when points are near identical

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Comment Edited] (LUCENE-8257) GeoComplexPolygon fails when points are near identical

JIRA jira@apache.org

    [ https://issues.apache.org/jira/browse/LUCENE-8257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16440442#comment-16440442 ]

Karl Wright edited comment on LUCENE-8257 at 4/17/18 6:09 AM:
--------------------------------------------------------------

For standard polygons, we wound up accepting the fact that points on the opposite sides of the world would be within the shape when there was a very tight angle between edge points, and even modified the bounds computation to allow it and compensate for it.

The "fix" involves having a backing sided plane for every edge that is perpendicular to both the edge end planes and goes through the center of the world.  But you don't want to have one unless the angle is very tiny, because it's expense you don't need and also because at larger angles it interferes with things.




was (Author: [hidden email]):
For standard polygons, we wound up accepting the fact that points on the opposite sides of the world would be within the shape, and even modified the bounds computation to allow it.  The question is whether that is what you are seeing here?


> GeoComplexPolygon fails when points are near identical
> ------------------------------------------------------
>
>                 Key: LUCENE-8257
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8257
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: modules/spatial3d
>            Reporter: Ignacio Vera
>            Assignee: Karl Wright
>            Priority: Major
>         Attachments: LUCENE-8257.patch
>
>
> When a polygon have two consecutive points very close to each other but not numerically identical, we can get wrong results because planes defining that edge intersects somewhere else on the world. At that point the following check is evaluated to true:
> {code:java}
> if (edge.plane.evaluateIsZero(thePointX, thePointY, thePointZ) && edge.startPlane.isWithin(thePointX, thePointY, thePointZ) && edge.endPlane.isWithin(thePointX, thePointY, thePointZ)) {
>   return false;
> }{code}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]