[
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: [email protected]
For additional commands, e-mail: [email protected]