[
https://issues.apache.org/jira/browse/LUCENE-8280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16457531#comment-16457531
]
Karl Wright commented on LUCENE-8280:
-------------------------------------
For testLUCENE8227, we have the following log output, which shows that indeed
we were not "catching" the edge transition for the starting point of the second
leg, and now we do. Unfortunately, we're also apparently missing another
transition that we should be catching. I analyzed this case before; will have
to repeat the work.
These are the edges:
{code}
[junit4] 1> Recording edge [[lat=-1.2205765069413237,
lon=3.141592653589793([X=-0.3424714964202101, Y=4.194066218902145E-17,
Z=-0.9375649457139603])] --> [lat=-0.63542308910253,
lon=0.9853722928232957([X=0.4446759777403525, Y=0.6707549854468698,
Z=-0.5934780737681111])]]; bounds = XYZBounds: [xmin=-0.3424714974202101
xmax=0.44467597874035253 ymin=-9.999999580593378E-10 ymax=0.6707549864468698
zmin=-0.9658414221587766 zmax=-0.5934780727681112]
[junit4] 1> Recording edge [[lat=-0.63542308910253,
lon=0.9853722928232957([X=0.4446759777403525, Y=0.6707549854468698,
Z=-0.5934780737681111])] --> [lat=0.0, lon=0.0([X=1.0011188539924791, Y=0.0,
Z=0.0])]]; bounds = XYZBounds: [xmin=0.4446759767403525 xmax=1.0011188549924792
ymin=-1.0E-9 ymax=0.6707549864468698 zmin=-0.5934780747681111 zmax=1.0E-9]
[junit4] 1> Recording edge [[lat=0.0, lon=0.0([X=1.0011188539924791,
Y=0.0, Z=0.0])] --> [lat=0.45435018176633574,
lon=3.141592653589793([X=-0.8989684544372841, Y=1.1009188402610632E-16,
Z=0.4390846549572752])]]; bounds = XYZBounds: [xmin=-0.8989684554372841
xmax=1.0011188549924792 ymin=-1.0E-9 ymax=1.0000002501693679E-9 zmin=-1.0E-9
zmax=0.997762293022105]
[junit4] 1> Recording edge [[lat=0.45435018176633574,
lon=3.141592653589793([X=-0.8989684544372841, Y=1.1009188402610632E-16,
Z=0.4390846549572752])] --> [lat=-0.375870856827283,
lon=2.9129132647718414([X=-0.9065744420970767, Y=0.21100590938346708,
Z=-0.36732668582405886])]]; bounds = XYZBounds: [xmin=-0.9936143692718389
xmax=-0.8989684534372842 ymin=-9.99999889908116E-10 ymax=0.21100591038346708
zmin=-0.3673266868240589 zmax=0.43908465595727525]
[junit4] 1> Recording edge [[lat=-0.375870856827283,
lon=2.9129132647718414([X=-0.9065744420970767, Y=0.21100590938346708,
Z=-0.36732668582405886])] --> [lat=-1.2205765069413237,
lon=3.141592653589793([X=-0.3424714964202101, Y=4.194066218902145E-17,
Z=-0.9375649457139603])]]; bounds = XYZBounds: [xmin=-0.9065744430970767
xmax=-0.34247149542021005 ymin=-9.999999580593378E-10 ymax=0.21100591038346708
zmin=-0.9375649467139603 zmax=-0.36732668482405884]
{code}
This is the output:
{code}
[junit4] 1> IsWithin() for [-1.0011188539924791,1.226017000107956E-16,0.0]
[junit4] 1> Trying testPoint1...
[junit4] 1>
[junit4] 1> IsInSet called for
[-1.0011188539924791,1.226017000107956E-16,0.0],
testPoint=[X=0.3804488906595847, Y=-0.47772089071622287, Z=0.7906122375677148];
is in set? true
[junit4] 1> Using two planes
[junit4] 1> Finding whether [X=-0.6107033713930277,
Y=1.226017000107956E-16, Z=0.7906122375677148] is in-set, based on travel from
[X=0.3804488906595847, Y=-0.47772089071622287, Z=0.7906122375677148] along
[A=0.0, B=0.0; C=1.0; D=-0.7906122375677148] (value=0.7906122375677148)
[junit4] 1> Constructing sector linear crossing edge iterator
[junit4] 1> Edge [[lat=0.0, lon=0.0([X=1.0011188539924791, Y=0.0,
Z=0.0])] --> [lat=0.45435018176633574,
lon=3.141592653589793([X=-0.8989684544372841, Y=1.1009188402610632E-16,
Z=0.4390846549572752])]] potentially crosses travel plane [A=0.0, B=0.0; C=1.0;
D=-0.7906122375677148]
[junit4] 1> Point is on the edge; in-set
[junit4] 1> Intersection point in-set? true On edge? true
[junit4] 1> Finding whether
[-1.0011188539924791,1.226017000107956E-16,0.0] is in-set, based on travel from
[X=-0.6107033713930277, Y=1.226017000107956E-16, Z=0.7906122375677148] along
[A=0.0, B=1.0; C=0.0; D=-1.226017000107956E-16] (value=1.226017000107956E-16)
[junit4] 1> Constructing sector linear crossing edge iterator
[junit4] 1> Edge [[lat=-0.375870856827283,
lon=2.9129132647718414([X=-0.9065744420970767, Y=0.21100590938346708,
Z=-0.36732668582405886])] --> [lat=-1.2205765069413237,
lon=3.141592653589793([X=-0.3424714964202101, Y=4.194066218902145E-17,
Z=-0.9375649457139603])]] potentially crosses travel plane [A=0.0, B=1.0;
C=0.0; D=-1.226017000107956E-16]
[junit4] 1> Finding intersections between edge plane and travel plane...
[junit4] 1> Edge intersects travel plane [A=0.0, B=1.0; C=0.0;
D=-1.226017000107956E-16]
[junit4] 1> Above crossings = 0; below crossings = 0
[junit4] 1> Edge [[lat=0.0, lon=0.0([X=1.0011188539924791, Y=0.0,
Z=0.0])] --> [lat=0.45435018176633574,
lon=3.141592653589793([X=-0.8989684544372841, Y=1.1009188402610632E-16,
Z=0.4390846549572752])]] potentially crosses travel plane [A=0.0, B=1.0; C=0.0;
D=-1.226017000107956E-16]
[junit4] 1> Finding intersections between edge plane and travel plane...
[junit4] 1> Edge intersects travel plane [A=0.0, B=1.0; C=0.0;
D=-1.226017000107956E-16]
[junit4] 1> Starting point crossing detected!
[junit4] 1> Above crossings = 0; below crossings = 0
[junit4] 1> Edge [[lat=-0.63542308910253,
lon=0.9853722928232957([X=0.4446759777403525, Y=0.6707549854468698,
Z=-0.5934780737681111])] --> [lat=0.0, lon=0.0([X=1.0011188539924791, Y=0.0,
Z=0.0])]] potentially crosses travel plane [A=0.0, B=1.0; C=0.0;
D=-1.226017000107956E-16]
[junit4] 1> Finding intersections between edge plane and travel plane...
[junit4] 1> Edge intersects travel plane [A=0.0, B=1.0; C=0.0;
D=-1.226017000107956E-16]
[junit4] 1> Above crossings = 0; below crossings = 0
[junit4] 1> Edge [[lat=-1.2205765069413237,
lon=3.141592653589793([X=-0.3424714964202101, Y=4.194066218902145E-17,
Z=-0.9375649457139603])] --> [lat=-0.63542308910253,
lon=0.9853722928232957([X=0.4446759777403525, Y=0.6707549854468698,
Z=-0.5934780737681111])]] potentially crosses travel plane [A=0.0, B=1.0;
C=0.0; D=-1.226017000107956E-16]
[junit4] 1> Finding intersections between edge plane and travel plane...
[junit4] 1> Edge intersects travel plane [A=0.0, B=1.0; C=0.0;
D=-1.226017000107956E-16]
[junit4] 1> Above crossings = 0; below crossings = 0
[junit4] 1> Edge [[lat=0.45435018176633574,
lon=3.141592653589793([X=-0.8989684544372841, Y=1.1009188402610632E-16,
Z=0.4390846549572752])] --> [lat=-0.375870856827283,
lon=2.9129132647718414([X=-0.9065744420970767, Y=0.21100590938346708,
Z=-0.36732668582405886])]] potentially crosses travel plane [A=0.0, B=1.0;
C=0.0; D=-1.226017000107956E-16]
[junit4] 1> Finding intersections between edge plane and travel plane...
[junit4] 1> Edge intersects travel plane [A=0.0, B=1.0; C=0.0;
D=-1.226017000107956E-16]
[junit4] 1> Above crossings = 0; below crossings = 1
[junit4] 1> Check point in set? false
{code}
Note that the "starting point crossing detected" is logged for an edge that
otherwise does not contribute at all to above or below crossings. That means
that this is has been effectively broken since the DualCrossingIterator went
away. We seemingly have a corresponding exit for the edge too, so the crossing
count of 1 is reasonable.
It's possible that I never really fixed LUCENE8227 properly in the first place;
the test depends on whether the bounds line up with the in-set-ness of a given
point. Let me confirm that it is really broken before trying to fix things.
> Repeatable failure for GeoConvexPolygons
> ----------------------------------------
>
> Key: LUCENE-8280
> URL: https://issues.apache.org/jira/browse/LUCENE-8280
> Project: Lucene - Core
> Issue Type: Bug
> Components: modules/spatial3d
> Reporter: Karl Wright
> Assignee: Karl Wright
> Priority: Major
>
> Reproduce with:
> {code}
> ant test -Dtestcase=TestGeo3DPoint -Dtests.method=testGeo3DRelations
> -Dtests.seed=1F49469C1989BC0 -Dtests.slow=true -Dtests.badapples=true
> -Dtests.locale=fr-BE -Dtests.timezone=Europe/Malta -Dtests.asserts=true
> -Dtests.file.encoding=Cp1252
> {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]