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

Karl Wright commented on LUCENE-8696:
-------------------------------------

Since we've eliminated the computation of the solid's example intersection 
points, that basically leaves numerical factors as the only potential cause.  
Let's examine this further.

In the case of GeoPaths on the WGS84 globe, path intersection points are 
described by "circles", which are in fact just planes that are picked so as to 
connect the path segments together, as described above.  But, each plane with 
two adjoining segments is selected based on FOUR surface points, not three.  
That means that there is a gap between one of the points and the actual 
endpoint circle.

When we compute membership in the path, we exclude points in that gap from 
membership.  This is done by considering the path segment end planes as 
delimiters of membership for both the endpoint "circles" as well as the 
segments.  But, those segment end planes are not considered when determining 
intersection, because they are "interior" to the path.  This means that it is 
possible for getRelationship() to miss an intersection with the path edge if 
the "gap" is large enough and everything lines up perfectly, and thus 
"CONTAINS" is reported where "OVERLAPS" would be the actual correct answer.

It should be possible to see if our test case would be resolved by considering 
path segment end edges.  A simple trial code change should be sufficient to 
know.  Then the question becomes how to prevent spurious intersections?  We 
could just permit them (it's allowed in the contract), or we could make more 
significant changes to path representation, for better accuracy.  Stay tuned.


> TestGeo3DPoint.testGeo3DRelations failure
> -----------------------------------------
>
>                 Key: LUCENE-8696
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8696
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: modules/spatial3d
>            Reporter: Ignacio Vera
>            Assignee: Karl Wright
>            Priority: Major
>         Attachments: LUCENE-8696.patch
>
>
> Reproduce with:
> {code:java}
> ant test  -Dtestcase=TestGeo3DPoint -Dtests.method=testGeo3DRelations 
> -Dtests.seed=721195D0198A8470 -Dtests.slow=true -Dtests.badapples=true 
> -Dtests.locale=sr-RS -Dtests.timezone=Europe/Istanbul -Dtests.asserts=true 
> -Dtests.file.encoding=ISO-8859-1{code}
> Error:
> {code:java}
>    [junit4] FAILURE 1.16s | TestGeo3DPoint.testGeo3DRelations <<<
>    [junit4]    > Throwable #1: java.lang.AssertionError: invalid hits for 
> shape=GeoStandardPath: {planetmodel=PlanetModel.WGS84, 
> width=1.3439035240356338(77.00000000000001), 
> points={[[lat=2.4457272005608357E-47, 
> lon=0.017453291479645996([X=1.0009663787601641, Y=0.017471932090601616, 
> Z=2.448463612203698E-47])], [lat=2.4457272005608357E-47, 
> lon=0.8952476719156919([X=0.6260252093310985, Y=0.7812370940381473, 
> Z=2.448463612203698E-47])], [lat=2.4457272005608357E-47, 
> lon=0.6491968536639036([X=0.7974608400583222, Y=0.6052232384770843, 
> Z=2.448463612203698E-47])], [lat=-0.7718789008737459, 
> lon=0.9236607495528212([X=0.43181767034308555, Y=0.5714183775701452, 
> Z=-0.6971214014446648])]]}}{code}



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

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

Reply via email to