lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karl Wright (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LUCENE-7941) GeoDegeneratePoints return intersects when located in edge shape
Date Mon, 28 Aug 2017 05:47:00 GMT

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

Karl Wright commented on LUCENE-7941:
-------------------------------------

[~ivera], line 2500 of Plane.java is the start of a comment.  But if I have the right place
(line 2305) then this is my response:

(1) The difference between intersects() and crosses() is what the code does with the situation
where there is only ONE solution to the line-intersecting-world computation it is performing.
 The code in question does differ from intersects() to crosses().

(2) The code you point out is trying to determine whether any of the two intersection points
found are within the bounds.  If neither is within the bounds then we must return false. 
But at this point we already know there are two intersection points on the globe; it does
not matter whether one point is in bounds and the other is outside.

The way crosses() should behave differently from intersects() is that it should exclude solutions
where the line of intersection touches the world at exactly one point.  That is the only difference.
 That is what the math can compute; no more, and no less.  If you can, in detail, supply an
example of where this fails to detect an edge crossing, or detects a crossing where it should
not, please do so, and we can analyze it further.

Note that the same logic exactly is used for GeoComplexPolygon, so we have some thoughts that
it might be actually doing the right thing, provided you understand what it is actually doing.
 GeoComplexPolygon also uses infitesimal planes (that is, planes that have been moved a small
distance one way or another) to count crossings, so maybe you will need to do something more
to come up with a fully viable approach here.

My suspicion, though, is that we really don't get to independently calculate edge crossings
from intersections in the way you would like -- at least not in a computationally acceptable
manner.


> GeoDegeneratePoints return intersects when located in edge shape 
> -----------------------------------------------------------------
>
>                 Key: LUCENE-7941
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7941
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Ignacio Vera
>            Assignee: Karl Wright
>            Priority: Minor
>             Fix For: 6.7, master (8.0), 7.1
>
>         Attachments: LUCENE-7941-test.patch
>
>
>  If the degenerate Geopoint lays on the boundary of a shape, the relationships between
the objects are not symetrical:
> The bounding box "thinks" it contains the degenerated point.
> The degenerated point "thinks" it intersects the shape.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message