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

Karl Wright edited comment on LUCENE-7970 at 9/22/17 12:47 PM:
---------------------------------------------------------------

[~ivera]  Obviously for this strategy to work we need a robust way of locating 
the minimum and maximum points in the cardinal directions from the center of 
the circle.  So that point-on-bearing method must do that whatever the provided 
center is and whatever the distance provided is, within reasonable limits.

Once that's possible I am quite comfortable writing logic that produces the two 
necessary planes that have the correct relationship with each other.

For testing, one plane will be defined by the top/bottom (aka "north" and 
"south") points, while the other will be determined by the east/west points.  
It's perfectly OK to have the "top/bottom" points be on opposite sides of the 
earth but we would require them both to be on a plane that goes through the 
north and south poles.  Then, "east/west" points would have to satisfy 
conditions as follows:

(1) Compute the plane that is perpendicular to the first plane which contains 
both the top and bottom points.  There is likely a Plane constructor for this 
kind of case already.
(2) The "east/west" points should be on a plane that goes through the center of 
the circle, and is perpendicular to both of the planes we've now mentioned.  We 
have logic that computes this plane too, I believe, that we could use for the 
test.

If we have the above planes and points, it's straightforward to pick the two 
ellipses that will define this shape.  I *think* that your point-on-bearing 
method will pick the right points if bearings are chosen in cardinal 
directions, but that's what we need to verify with a test.  Please also make 
sure to verify that that works for a sample of points that includes the north 
and south poles.

Thanks!



was (Author: kwri...@metacarta.com):
[~ivera]  Obviously for this strategy to work we need a robust way of locating 
the minimum and maximum points in the cardinal directions from the center of 
the circle.  So that point-on-bearing method must do that whatever the provided 
center is and whatever the distance provided is, within reasonable limits.

Once that's possible I am quite comfortable writing logic that produces the two 
necessary planes that have the correct relationship with each other.

For testing, one plane will be defined by the top/bottom (aka "north" and 
"south") points, while the other will be determined by the east/west points.  
It's perfectly OK to have the "top/bottom" points be on opposite sides of the 
earth but we would require them both to be on a plane that goes through the 
north and south poles.  Then, "east/west" points would be computed as follows:

(1) Compute the plane that is perpendicular to the first plane which contains 
both the top and bottom points.  There is likely a Plane constructor for this 
kind of case already.
(2) The "east/west" points should be on a plane that goes through the center of 
the circle, and is perpendicular to both of the planes we've now mentioned.  We 
have logic that computes this plane too, I believe, that we could use for the 
test.

If we have the above planes and points, it's straightforward to pick the two 
ellipses that will define this shape.  I *think* that your point-on-bearing 
method will pick the right points if bearings are chosen in cardinal 
directions, but that's what we need to verify with a test.  Please also make 
sure to verify that that works for a sample of points that includes the north 
and south poles.

Thanks!


> Improve generation of circle plane 
> -----------------------------------
>
>                 Key: LUCENE-7970
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7970
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/spatial3d
>            Reporter: Ignacio Vera
>            Assignee: Karl Wright
>         Attachments: LUCENE_7970.patch, LUCENE-7970.patch, 
> LUCENE-7970-proposed.patch
>
>
> Hi [~Karl wright],
> How circles are currently build do not behave very well when the planet model 
> is not an sphere. when you are close to the border in WGS84 you might get 
> false positves or false negatives when checking if a point is WITHIN. I think 
> the reason is how the points to generate the circle plane are generated which 
> assumes a sphere.
> My proposal is the following:
> Add a new method to PlanetModel:  
> public GeoPoint pointOnBearing(GeoPoint from, double dist, double bearing);
> Which uses and algorithm that takes into account that the planet might not be 
> spherical. For example Vincenty's formulae 
> (https://en.wikipedia.org/wiki/Vincenty%27s_formulae).
> Use this method to generate the points for the circle plane. My experiments 
> shows that this approach removes false negatives in WGS84 meanwhile it works 
> nicely in the Sphere.
> Does it make sense?



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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to