LUCENE-8928: Check that point is inside an edge bounding box when

checking if the point belongs to the edge
This commit is contained in:
iverase 2019-10-14 20:27:16 +02:00
parent 68a3886b97
commit 1d97e25a8a
1 changed files with 9 additions and 1 deletions

View File

@ -119,7 +119,15 @@ public class EdgeTree {
/** returns true if the provided x, y point lies on the line */
protected boolean isPointOnLine(double x, double y) {
if (y <= max) {
if (orient(x1, y1, x2, y2, x, y) == 0) {
double a1x = x1;
double a1y = y1;
double b1x = x2;
double b1y = y2;
boolean outside = (a1y < y && b1y < y) ||
(a1y > y && b1y > y) ||
(a1x < x && b1x < x) ||
(a1x > x && b1x > x);
if (outside == false && orient(a1x, a1y, b1x, b1y, x, y) == 0) {
return true;
}
if (left != null && left.isPointOnLine(x, y)) {