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
    Modifier and Type | Field and Description
    --- | ---
    `protected Component2D` | `holes` tree of holes, or null

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `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
    Modifier and Type | Method and Description
    --- | ---
    `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

Copyright © 2000-2020 Apache Software Foundation. All Rights Reserved.