Package org.apache.lucene.spatial3d.geom

## Interface GeoShape

- All Superinterfaces:
    `Bounded`, `GeoBounds`, `Membership`, `PlanetObject`, `SerializableObject`
  All Known Subinterfaces:
    `GeoAreaShape`, `GeoBBox`, `GeoCircle`, `GeoDistanceShape`, `GeoMembershipShape`, `GeoPath`, `GeoPointShape`, `GeoPolygon`
  All Known Implementing Classes:
    `GeoBaseCompositeShape`, `GeoBaseDistanceShape`, `GeoBaseMembershipShape`, `GeoBaseShape`, `GeoCompositeAreaShape`, `GeoCompositeMembershipShape`, `GeoCompositePolygon`, `GeoDegenerateVerticalLine`

      public interface GeoShape
      extends GeoBounds

  Generic shape. This describes methods that help GeoAreas figure out how they interact with a shape, for the purposes of coming up with a set of geo hash values.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `GeoPoint[]` | `getEdgePoints()` | Return a sample point that is on the outside edge/boundary of the shape.
    `boolean` | `intersects​(Plane plane, GeoPoint[] notablePoints, Membership... bounds)` | Assess whether a plane, within the provided bounds, intersects with the shape's edges.

    - ### Methods inherited from interface org.apache.lucene.spatial3d.geom.Bounded

      `getBounds`

    - ### Methods inherited from interface org.apache.lucene.spatial3d.geom.Membership

      `isWithin, isWithin`

    - ### Methods inherited from interface org.apache.lucene.spatial3d.geom.PlanetObject

      `getPlanetModel`

    - ### Methods inherited from interface org.apache.lucene.spatial3d.geom.SerializableObject

      `write`

- - ### Method Detail

    - #### getEdgePoints

          GeoPoint[] getEdgePoints()

      Return a sample point that is on the outside edge/boundary of the shape.
      Returns:
        samples of all edge points from distinct edge sections. Typically one point is returned, but zero or two are also possible.

    - #### intersects

          boolean intersects​(Plane plane,
                             GeoPoint[] notablePoints,
                             Membership... bounds)

      Assess whether a plane, within the provided bounds, intersects with the shape's edges. Any overlap, even a single point, is considered to be an intersection. Note well that this method is allowed to return "true" if there are internal edges of a composite shape which intersect the plane. Doing this can cause getRelationship() for most GeoBBox shapes to return OVERLAPS rather than the more correct CONTAINS, but that cannot be helped for some complex shapes that are built out of overlapping parts.
      Parameters:
        `plane` - is the plane to assess for intersection with the shape's edges or bounding curves.
        `notablePoints` - represents the intersections of the plane with the supplied bounds. These are used to disambiguate when two planes are identical and it needs to be determined whether any points exist that fulfill all the bounds.
        `bounds` - are a set of bounds that define an area that an intersection must be within in order to qualify (provided by a GeoArea).
      Returns:
        true if there's such an intersection, false if not.