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

Karl Wright edited comment on LUCENE-8251 at 4/13/18 10:49 AM:
---------------------------------------------------------------

Ok, the travel plane is really tiny and it's all the way out at the maximum X 
pole:

{code}
   [junit4]   1> TestPoint plane: [lat=-1.1675693914784415, 
lon=-1.8506150182993802E-4([X=0.39171238223740795, Y=-7.249088256978756E-5, 
Z=-0.9182146655290553])] -> [X=1.0011188498955597, Y=-7.249088256978756E-5, 
Z=-5.4114167758588356E-5]
   [junit4]   1> Travel plane: 
[1.0011188498955597,9.057045181228716E-5,3.5E-323] -> [X=1.0011188498955597, 
Y=-7.249088256978756E-5, Z=-5.4114167758588356E-5]
{code}

That's the plane that is being crossed.  I bet the problem is that one of the 
envelope planes only intersects the world at the intersection point region, but 
doesn't intersect the world where the edge would cross it.

Hmm, not sure what to do here.  Obviously the choice of travel planes could be 
better and that would fix the problem, but can we *guarantee* that there's 
always a better choice of travel planes?




was (Author: [email protected]):
Ok, the travel plane is really tiny at it's all the way out at the maximum X 
pole:

{code}
   [junit4]   1> TestPoint plane: [lat=-1.1675693914784415, 
lon=-1.8506150182993802E-4([X=0.39171238223740795, Y=-7.249088256978756E-5, 
Z=-0.9182146655290553])] -> [X=1.0011188498955597, Y=-7.249088256978756E-5, 
Z=-5.4114167758588356E-5]
   [junit4]   1> Travel plane: 
[1.0011188498955597,9.057045181228716E-5,3.5E-323] -> [X=1.0011188498955597, 
Y=-7.249088256978756E-5, Z=-5.4114167758588356E-5]
{code}

That's the plane that is being crossed.  I bet the problem is that one of the 
envelope planes only intersects the world at the intersection point region, but 
doesn't intersect the world where the edge would cross it.

Hmm, not sure what to do here.  Obviously the choice of travel planes could be 
better and that would fix the problem, but can we *guarantee* that there's 
always a better choice of travel planes?



> Test failure, geo3d complex polygons
> ------------------------------------
>
>                 Key: LUCENE-8251
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8251
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: modules/spatial3d
>    Affects Versions: master (8.0)
>            Reporter: Karl Wright
>            Assignee: Karl Wright
>            Priority: Major
>             Fix For: 6.7, 7.4, master (8.0)
>
>         Attachments: LUCENE-8251.jpg
>
>
> {code}
> Error Message:
>  Standard polygon: GeoCompositePolygon: {[GeoConvexPolygon: 
> {planetmodel=PlanetModel.WGS84, points=[[lat=-0.12884119701201008, 
> lon=-1.157781399251359([X=0.3984689569776051, Y=-0.9092889699600808, 
> Z=-0.1286216320286114])], [lat=-0.8977173781916888, 
> lon=2.3672262552845993([X=-0.44522608342175374, Y=0.435509619867484, 
> Z=-0.7811731004355484])], [lat=-1.0294747773716673, 
> lon=1.97235866074843([X=-0.20112459723348416, Y=0.47363995489643546, 
> Z=-0.8558716366345036])]], internalEdges={2}}, GeoConvexPolygon: 
> {planetmodel=PlanetModel.WGS84, points=[[lat=-0.12884119701201008, 
> lon=-1.157781399251359([X=0.3984689569776051, Y=-0.9092889699600808, 
> Z=-0.1286216320286114])], [lat=-1.0294747773716673, 
> lon=1.97235866074843([X=-0.20112459723348416, Y=0.47363995489643546, 
> Z=-0.8558716366345036])], [lat=-6.4E-323, lon=0.0([X=1.0011188539924791, 
> Y=0.0, Z=-6.4E-323])]], internalEdges={0}}]}  Large polygon: 
> GeoComplexPolygon: {planetmodel=PlanetModel.WGS84, number of shapes=1, 
> address=814a2a8c, testPoint=[lat=-1.1675693914784415, 
> lon=-1.850615018297906E-4([X=0.39171238223740806, Y=-7.249088256972983E-5, 
> Z=-0.9182146655290553])], testPointInSet=true, shapes={ 
> {[lat=-0.12884119701201008, lon=-1.157781399251359([X=0.3984689569776051, 
> Y=-0.9092889699600808, Z=-0.1286216320286114])], [lat=-0.8977173781916888, 
> lon=2.3672262552845993([X=-0.44522608342175374, Y=0.435509619867484, 
> Z=-0.7811731004355484])], [lat=-1.0294747773716673, 
> lon=1.97235866074843([X=-0.20112459723348416, Y=0.47363995489643546, 
> Z=-0.8558716366345036])], [lat=-6.4E-323, lon=0.0([X=1.0011188539924791, 
> Y=0.0, Z=-6.4E-323])]}}  Point: [lat=3.5E-323, 
> lon=9.046923007656787E-5([X=1.0011188498955597, Y=9.057045181228716E-5, 
> Z=3.5E-323])]  WKT: POLYGON((135.63207358036593 
> -51.43541696593334,113.00782694696038 -58.984559858566556,0.0 
> -3.68E-321,-66.33598777585381 -7.382056816201731,135.63207358036593 
> -51.43541696593334))  WKT: POINT(0.005183505059185348 1.98E-321) normal 
> polygon: false large polygon: true
> Stack Trace:
> java.lang.AssertionError:
> Standard polygon: GeoCompositePolygon: {[GeoConvexPolygon: 
> {planetmodel=PlanetModel.WGS84, points=[[lat=-0.12884119701201008, 
> lon=-1.157781399251359([X=0.3984689569776051, Y=-0.9092889699600808, 
> Z=-0.1286216320286114])], [lat=-0.8977173781916888, 
> lon=2.3672262552845993([X=-0.44522608342175374, Y=0.435509619867484, 
> Z=-0.7811731004355484])], [lat=-1.0294747773716673, 
> lon=1.97235866074843([X=-0.20112459723348416, Y=0.47363995489643546, 
> Z=-0.8558716366345036])]], internalEdges={2}}, GeoConvexPolygon: 
> {planetmodel=PlanetModel.WGS84, points=[[lat=-0.12884119701201008, 
> lon=-1.157781399251359([X=0.3984689569776051, Y=-0.9092889699600808, 
> Z=-0.1286216320286114])], [lat=-1.0294747773716673, 
> lon=1.97235866074843([X=-0.20112459723348416, Y=0.47363995489643546, 
> Z=-0.8558716366345036])], [lat=-6.4E-323, lon=0.0([X=1.0011188539924791, 
> Y=0.0, Z=-6.4E-323])]], internalEdges={0}}]}
> Large polygon: GeoComplexPolygon: {planetmodel=PlanetModel.WGS84, number of 
> shapes=1, address=814a2a8c, testPoint=[lat=-1.1675693914784415, 
> lon=-1.850615018297906E-4([X=0.39171238223740806, Y=-7.249088256972983E-5, 
> Z=-0.9182146655290553])], testPointInSet=true, shapes={ 
> {[lat=-0.12884119701201008, lon=-1.157781399251359([X=0.3984689569776051, 
> Y=-0.9092889699600808, Z=-0.1286216320286114])], [lat=-0.8977173781916888, 
> lon=2.3672262552845993([X=-0.44522608342175374, Y=0.435509619867484, 
> Z=-0.7811731004355484])], [lat=-1.0294747773716673, 
> lon=1.97235866074843([X=-0.20112459723348416, Y=0.47363995489643546, 
> Z=-0.8558716366345036])], [lat=-6.4E-323, lon=0.0([X=1.0011188539924791, 
> Y=0.0, Z=-6.4E-323])]}}
> Point: [lat=3.5E-323, lon=9.046923007656787E-5([X=1.0011188498955597, 
> Y=9.057045181228716E-5, Z=3.5E-323])]
> WKT: POLYGON((135.63207358036593 -51.43541696593334,113.00782694696038 
> -58.984559858566556,0.0 -3.68E-321,-66.33598777585381 
> -7.382056816201731,135.63207358036593 -51.43541696593334))
> WKT: POINT(0.005183505059185348 1.98E-321)
> normal polygon: false
> large polygon: true
>         at 
> __randomizedtesting.SeedInfo.seed([C1E5FF7FBC7AC980:47CE8D3C5A69DD5B]:0)
>         at org.junit.Assert.fail(Assert.java:93)
>         at org.junit.Assert.assertTrue(Assert.java:43)
>         at 
> org.apache.lucene.spatial3d.geom.RandomGeoPolygonTest.testComparePolygons(RandomGeoPolygonTest.java:179)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1737)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:934)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:970)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:984)
>         at 
> org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
>         at 
> org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
>         at 
> org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
>         at 
> org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
>         at 
> org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
>         at 
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at 
> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
>         at 
> com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
>         at 
> com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:943)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:829)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:879)
>         at 
> com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:890)
>         at 
> org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
>         at 
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at 
> org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
>         at 
> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>         at 
> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>         at 
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at 
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at 
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at 
> org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
>         at 
> org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
>         at 
> org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
>         at 
> org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
>         at 
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>         at 
> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
>         at java.lang.Thread.run(Thread.java:748)
> {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