java.lang.Object
org.apache.commons.math3.geometry.euclidean.twod.hull.ConvexHull2D
All Implemented Interfaces:
Serializable, ConvexHull<Euclidean2D,Vector2D>

public class ConvexHull2D extends Object implements ConvexHull<Euclidean2D,Vector2D>, Serializable
This class represents a convex hull in an two-dimensional euclidean space.
Since:
3.3
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serializable UID.
      See Also:
    • vertices

      private final Vector2D[] vertices
      Vertices of the hull.
    • tolerance

      private final double tolerance
      Tolerance threshold used during creation of the hull vertices.
    • lineSegments

      private transient Segment[] lineSegments
      Line segments of the hull. The array is not serialized and will be created from the vertices on first access.
  • Constructor Details

    • ConvexHull2D

      public ConvexHull2D(Vector2D[] vertices, double tolerance) throws MathIllegalArgumentException
      Simple constructor.
      Parameters:
      vertices - the vertices of the convex hull, must be ordered
      tolerance - tolerance below which points are considered identical
      Throws:
      MathIllegalArgumentException - if the vertices do not form a convex hull
  • Method Details

    • isConvex

      private boolean isConvex(Vector2D[] hullVertices)
      Checks whether the given hull vertices form a convex hull.
      Parameters:
      hullVertices - the hull vertices
      Returns:
      true if the vertices form a convex hull, false otherwise
    • getVertices

      public Vector2D[] getVertices()
      Get the vertices of the convex hull.
      Specified by:
      getVertices in interface ConvexHull<Euclidean2D,Vector2D>
      Returns:
      vertices of the convex hull
    • getLineSegments

      public Segment[] getLineSegments()
      Get the line segments of the convex hull, ordered.
      Returns:
      the line segments of the convex hull
    • retrieveLineSegments

      private Segment[] retrieveLineSegments()
      Retrieve the line segments from the cached array or create them if needed.
      Returns:
      the array of line segments
    • createRegion

      public Region<Euclidean2D> createRegion() throws InsufficientDataException
      Returns a new region that is enclosed by the convex hull.
      Specified by:
      createRegion in interface ConvexHull<Euclidean2D,Vector2D>
      Returns:
      the region enclosed by the convex hull
      Throws:
      InsufficientDataException - if the number of vertices is not enough to build a region in the respective space