[ 
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]

Reply via email to