Class 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-width 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 rectangle may be a LineString or a Point. (Note that this may not be the enclosing rectangle with minimum area; use MinimumAreaRectangle to compute this.)
    Version:
    1.7
    See Also:
    ConvexHull, MinimumAreaRectangle
    • Constructor Detail

      • 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 Detail

      • getMinimumRectangle

        public static Geometry getMinimumRectangle​(Geometry geom)
        Gets the minimum-width rectangular Polygon which encloses the input geometry and is based along the supporting segment. 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.

        This is not necessarily the rectangle with minimum area. Use MinimumAreaRectangle to compute this.

        Parameters:
        geom - the geometry
        Returns:
        the minimum-width rectangle enclosing the geometry
        See Also:
        MinimumAreaRectangle
      • 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
      • getMinimumRectangle

        public Geometry getMinimumRectangle()
        Gets the rectangular Polygon which encloses the input geometry and is based on the minimum diameter supporting segment. 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.

        This is not necessarily the enclosing rectangle with minimum area.

        Returns:
        a rectangle enclosing the input (or a line or point if degenerate)
        See Also:
        MinimumAreaRectangle