Class MinimumDiameter

java.lang.Object
org.locationtech.jts.algorithm.MinimumDiameter

public class MinimumDiameter extends Object
Computes the minimum diameter of a Geometry. The minimum diameter is defined to be the width of the smallest band that contains the geometry, where a band is a strip of the plane defined by two parallel lines. This can be thought of as the smallest hole that the geometry can be moved through, with a single rotation.

The first step in the algorithm is computing the convex hull of the Geometry. If the input Geometry is known to be convex, a hint can be supplied to avoid this computation.

This class can also be used to compute:

  • a line segment representing the minimum diameter
  • the supporting line segment of the minimum diameter
  • the minimum enclosing rectangle of the input geometry. The rectangle has width equal to the minimum diameter, and has one side parallel to the supporting segment. In degenerate cases the minimum enclosing geometry may be a LineString or a Point.
Version:
1.7
See Also:
  • Constructor Details

    • MinimumDiameter

      public MinimumDiameter(Geometry inputGeom)
      Compute a minimum diameter for a given Geometry.
      Parameters:
      inputGeom - a Geometry
    • MinimumDiameter

      public MinimumDiameter(Geometry inputGeom, boolean isConvex)
      Compute a minimum diameter for a giver Geometry, with a hint if the Geometry is convex (e.g. a convex Polygon or LinearRing, or a two-point LineString, or a Point).
      Parameters:
      inputGeom - a Geometry which is convex
      isConvex - true if the input geometry is convex
  • Method Details

    • getMinimumRectangle

      public static Geometry getMinimumRectangle(Geometry geom)
      Gets the minimum rectangular Polygon which encloses the input geometry. The rectangle has width equal to the minimum diameter, and a longer length. If the convex hull of the input is degenerate (a line or point) a LineString or Point is returned.

      The minimum rectangle can be used as an extremely generalized representation for the given geometry.

      Parameters:
      geom - the geometry
      Returns:
      the minimum rectangle enclosing the geometry
    • getMinimumDiameter

      public static Geometry getMinimumDiameter(Geometry geom)
      Gets the length of the minimum diameter enclosing a geometry
      Parameters:
      geom - the geometry
      Returns:
      the length of the minimum diameter of the geometry
    • getLength

      public double getLength()
      Gets the length of the minimum diameter of the input Geometry
      Returns:
      the length of the minimum diameter
    • getWidthCoordinate

      public Coordinate getWidthCoordinate()
      Gets the Coordinate forming one end of the minimum diameter
      Returns:
      a coordinate forming one end of the minimum diameter
    • getSupportingSegment

      public LineString getSupportingSegment()
      Gets the segment forming the base of the minimum diameter
      Returns:
      the segment forming the base of the minimum diameter
    • getDiameter

      public LineString getDiameter()
      Gets a LineString which is a minimum diameter
      Returns:
      a LineString which is a minimum diameter
    • getMinimumRectangle

      public Geometry getMinimumRectangle()
      Gets the minimum rectangular Polygon which encloses the input geometry. The rectangle has width equal to the minimum diameter, and a longer length. If the convex hull of the input is degenerate (a line or point) a LineString or Point is returned.

      The minimum rectangle can be used as an extremely generalized representation for the given geometry.

      Returns:
      the minimum rectangle enclosing the input (or a line or point if degenerate)