[jira] [Commented] (LUCENE-8080) GeoExactCircle improvement

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (LUCENE-8080) GeoExactCircle improvement

JIRA jira@apache.org

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

Ignacio Vera commented on LUCENE-8080:
--------------------------------------

Hi [~daddywri],

My assumption is that the circle center is always within the plane because it is the point used to choose sideness, therefore what you provide to detect bogus plane is equivalent to what I have in the patch.

<quote>
Can you try to explain to me why the sector approach fails?
<quote>
I think it is because the way circle planes are constructed which have a cutting angle that depends on the three points we have to build them. Tests indicates that cutting angles depend on the planet model flattening. For example, WGS84 seems not to be affected by bogus planes, but if you make a planet model with higher flattening, the problem is observed.

I think this is important to have in mind, cutting angles depend on planet flattening.

<quote>
 I would think that, for a bad sector, just splitting the sector further might consistently solve the problem. Why doesn't it?
<quote>
My first try to fix this issue was to force splitting further as you said but it did not fix the problem and shape could not be built. Cutting angle does not depend on secot size.

So far the best way I found is the approach that I sent to you that  throughful test shows that it is valid up to flattening ~|0.1|. The new inner plane is a best effort approach and there is space between this new plane and the circle plane for things to go wrong.

Is there a better way to construct such a plane to make sure it overlaps with the circle plane? I haven't found a way yet.

Note: I noticed that the surface distance methods do not converge when flatenning is bigger than 0.4 so there is a limit there as well. It is in the tests.






 









> GeoExactCircle improvement
> --------------------------
>
>                 Key: LUCENE-8080
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8080
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/spatial3d
>            Reporter: Ignacio Vera
>            Assignee: Karl Wright
>         Attachments: LUCENE-8080-test.patch, LUCENE-8080.patch
>
>
> Hi [~daddywri],
> Current implementation of GeoExactCircle seems to work well for planet models with low flattening (~|0.025|). When flattening increase shapes start becoming invalid because of the cutting angle of the circle plane which results on the center of the circle ending up on the wrong side of the plane.
> I propose a new version of GeoExactCircle that tries to overcome this problem by creating a new plane for a circle sector in such cases. The new plane is built built for each sector when needed by using two points from the circle edge and the center of the world. The plane is such that it is built as close as possible to the circle plane of the sector. Points from the circle plane must not be within the new plane and the center of the circle must be within the plane.
> This approach seems to work well up to planets with flattening up to around ~|0.1|. I think after that the cutting angles of circle planes can be so thin that the apporach is not valid.
> Therefore I propose to add this new approach and limit the creation of such circles to planet models with flattening lower than |0.1|. Probably a limitation that does not affect most of the realistic cases.
> In addition this new version forces a minimum of 4 sectors in a circle. The issue on LUCENE-8071 came up again for circles of any radius so we should enforce it for all circles.
> Thanks!



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]