org.apache.lucene.geo

## Class Polygon2D

- java.lang.Object
- - org.apache.lucene.geo.Polygon2D

All Implemented Interfaces:
  Component2D

    public class Polygon2D
    extends Object
    implements Component2D

2D polygon implementation represented as a balanced interval tree of edges.

Loosely based on the algorithm described in http://www-ma2.upc.es/geoc/Schirra-pointPolygon.pdf.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.lucene.geo.Component2D

`Component2D.WithinRelation`

### Field Summary

Fields
`protected Component2D` `holes` tree of holes, or null

### Constructor Summary

Constructors
`protected` `Polygon2D(double minX, double maxX, double minY, double maxY, double[] x, double[] y, Component2D holes)`
`protected` `Polygon2D(Polygon polygon, Component2D holes)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`boolean` `contains(double x, double y)` Returns true if the point is contained within this polygon.
`static Component2D` `create(Polygon... polygons)` Builds a Polygon2D from multipolygon
`double` `getMaxX()` max X value for the component
`double` `getMaxY()` max Y value for the component
`double` `getMinX()` min X value for the component
`double` `getMinY()` min Y value for the component
`PointValues.Relation` `relate(double minX, double maxX, double minY, double maxY)` relates this component2D with a bounding box
`PointValues.Relation` `relateTriangle(double minX, double maxX, double minY, double maxY, double ax, double ay, double bx, double by, double cx, double cy)` relates this component2D with a triangle
`Component2D.WithinRelation` `withinTriangle(double minX, double maxX, double minY, double maxY, double ax, double ay, boolean ab, double bx, double by, boolean bc, double cx, double cy, boolean ca)` Compute the within relation of this component2D with a triangle

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.lucene.geo.Component2D

`containsPoint, disjoint, pointInTriangle, relateTriangle, within, withinTriangle`

### Field Detail

#### holes

    protected final Component2D holes

tree of holes, or null

### Constructor Detail

#### Polygon2D

    protected Polygon2D(double minX,
                        double maxX,
                        double minY,
                        double maxY,
                        double[] x,
                        double[] y,
                        Component2D holes)

#### Polygon2D

    protected Polygon2D(Polygon polygon,
                        Component2D holes)

### Method Detail

#### getMinX

    public double getMinX()

Description copied from interface: `Component2D`
min X value for the component

Specified by:
  `getMinX` in interface `Component2D`

#### getMaxX

    public double getMaxX()

Description copied from interface: `Component2D`
max X value for the component

Specified by:
  `getMaxX` in interface `Component2D`

#### getMinY

    public double getMinY()

Description copied from interface: `Component2D`
min Y value for the component

Specified by:
  `getMinY` in interface `Component2D`

#### getMaxY

    public double getMaxY()

Description copied from interface: `Component2D`
max Y value for the component

Specified by:
  `getMaxY` in interface `Component2D`

#### contains

    public boolean contains(double x,
                            double y)

Returns true if the point is contained within this polygon.

See https://www.ecse.rpi.edu/~wrf/Research/Short_Notes/pnpoly.html for more information.

Specified by:
  `contains` in interface `Component2D`

#### relate

    public PointValues.Relation relate(double minX,
                                       double maxX,
                                       double minY,
                                       double maxY)

Description copied from interface: `Component2D`
relates this component2D with a bounding box

Specified by:
  `relate` in interface `Component2D`

#### relateTriangle

    public PointValues.Relation relateTriangle(double minX,
                                               double maxX,
                                               double minY,
                                               double maxY,
                                               double ax,
                                               double ay,
                                               double bx,
                                               double by,
                                               double cx,
                                               double cy)

Description copied from interface: `Component2D`
relates this component2D with a triangle

Specified by:
  `relateTriangle` in interface `Component2D`

#### withinTriangle

    public Component2D.WithinRelation withinTriangle(double minX,
                                                     double maxX,
                                                     double minY,
                                                     double maxY,
                                                     double ax,
                                                     double ay,
                                                     boolean ab,
                                                     double bx,
                                                     double by,
                                                     boolean bc,
                                                     double cx,
                                                     double cy,
                                                     boolean ca)

Description copied from interface: `Component2D`
Compute the within relation of this component2D with a triangle

Specified by:
  `withinTriangle` in interface `Component2D`

#### create

    public static Component2D create(Polygon... polygons)

Builds a Polygon2D from multipolygon