package com.github.davidmoten.rtree.geometry;
import rx.functions.Func2;
public final class Intersects {
private Intersects() {
// prevent instantiation
}
public static final Func2<Rectangle, Circle, Boolean> rectangleIntersectsCircle = new Func2<Rectangle, Circle, Boolean>() {
@Override
public Boolean call(Rectangle rectangle, Circle circle) {
return circleIntersectsRectangle.call(circle, rectangle);
}
};
public static final Func2<Circle, Rectangle, Boolean> circleIntersectsRectangle = new Func2<Circle, Rectangle, Boolean>() {
@Override
public Boolean call(Circle circle, Rectangle rectangle) {
return circle.intersects(rectangle);
}
};
public static final Func2<Point, Circle, Boolean> pointIntersectsCircle = new Func2<Point, Circle, Boolean>() {
@Override
public Boolean call(Point point, Circle circle) {
return circleIntersectsPoint.call(circle, point);
}
};
public static final Func2<Circle, Point, Boolean> circleIntersectsPoint = new Func2<Circle, Point, Boolean>() {
@Override
public Boolean call(Circle circle, Point point) {
return circle.intersects(point);
}
};
public static final Func2<Circle, Circle, Boolean> circleIntersectsCircle = new Func2<Circle, Circle, Boolean>() {
@Override
public Boolean call(Circle a, Circle b) {
return a.intersects(b);
}
};
public static final Func2<Line, Line, Boolean> lineIntersectsLine = new Func2<Line, Line, Boolean>() {
@Override
public Boolean call(Line a, Line b) {
return a.intersects(b);
}
};
public static final Func2<Line, Rectangle, Boolean> lineIntersectsRectangle = new Func2<Line, Rectangle, Boolean>() {
@Override
public Boolean call(Line a, Rectangle r) {
return rectangleIntersectsLine.call(r, a);
}
};
public static final Func2<Rectangle, Line, Boolean> rectangleIntersectsLine = new Func2<Rectangle, Line, Boolean>() {
@Override
public Boolean call(Rectangle r, Line a) {
return a.intersects(r);
}
};
public static final Func2<Line, Circle, Boolean> lineIntersectsCircle = new Func2<Line, Circle, Boolean>() {
@Override
public Boolean call(Line a, Circle c) {
return circleIntersectsLine.call(c, a);
}
};
public static final Func2<Circle, Line, Boolean> circleIntersectsLine = new Func2<Circle, Line, Boolean>() {
@Override
public Boolean call(Circle c, Line a) {
return a.intersects(c);
}
};
public static final Func2<Line, Point, Boolean> lineIntersectsPoint = new Func2<Line, Point, Boolean>() {
@Override
public Boolean call(Line line, Point point) {
return pointIntersectsLine.call(point, line);
}
};
public static final Func2<Point, Line, Boolean> pointIntersectsLine = new Func2<Point, Line, Boolean>() {
@Override
public Boolean call(Point point, Line line) {
return line.intersects(point);
}
};
public static final Func2<Geometry, Line, Boolean> geometryIntersectsLine = new Func2<Geometry, Line, Boolean>() {
@Override
public Boolean call(Geometry geometry, Line line) {
if (geometry instanceof Line)
return line.intersects((Line) geometry);
else if (geometry instanceof Circle)
return line.intersects((Circle) geometry);
else if (geometry instanceof Point)
return line.intersects((Point) geometry);
else if (geometry instanceof Rectangle)
return line.intersects((Rectangle) geometry);
else
throw new RuntimeException("unrecognized geometry: " + geometry);
}
};
public static final Func2<Geometry, Circle, Boolean> geometryIntersectsCircle = new Func2<Geometry, Circle, Boolean>() {
@Override
public Boolean call(Geometry geometry, Circle circle) {
if (geometry instanceof Line)
return circle.intersects((Line) geometry);
else if (geometry instanceof Circle)
return circle.intersects((Circle) geometry);
else if (geometry instanceof Point)
return circle.intersects((Point) geometry);
else if (geometry instanceof Rectangle)
return circle.intersects((Rectangle) geometry);
else
throw new RuntimeException("unrecognized geometry: " + geometry);
}
};
public static final Func2<Circle, Geometry, Boolean> circleIntersectsGeometry = new Func2<Circle, Geometry, Boolean>() {
@Override
public Boolean call(Circle circle, Geometry geometry) {
return geometryIntersectsCircle.call(geometry, circle);
}
};
public static final Func2<Geometry, Rectangle, Boolean> geometryIntersectsRectangle = new Func2<Geometry, Rectangle, Boolean>() {
@Override
public Boolean call(Geometry geometry, Rectangle r) {
if (geometry instanceof Line)
return geometry.intersects(r);
else if (geometry instanceof Circle)
return geometry.intersects(r);
else if (geometry instanceof Point)
return geometry.intersects(r);
else if (geometry instanceof Rectangle)
return r.intersects((Rectangle) geometry);
else
throw new RuntimeException("unrecognized geometry: " + geometry);
}
};
public static final Func2<Rectangle, Geometry, Boolean> rectangleIntersectsGeometry = new Func2<Rectangle, Geometry, Boolean>() {
@Override
public Boolean call(Rectangle r, Geometry geometry) {
return geometryIntersectsRectangle.call(geometry, r);
}
};
public static final Func2<Geometry, Point, Boolean> geometryIntersectsPoint = new Func2<Geometry, Point, Boolean>() {
@Override
public Boolean call(Geometry geometry, Point point) {
return geometryIntersectsRectangle.call(geometry, point.mbr());
}
};
public static final Func2<Point, Geometry, Boolean> pointIntersectsGeometry = new Func2<Point, Geometry, Boolean>() {
@Override
public Boolean call(Point point, Geometry geometry) {
return geometryIntersectsPoint.call(geometry, point);
}
};
}