java.lang.Object
com.io7m.jregions.core.parameterized.areas.PAreasBD

public final class PAreasBD
extends java.lang.Object

Functions over areas.

These functions operate using the concepts of minimum-x, maximum-x, minimum-y, and maximum-y edges. It is up to individual applications to assign meaning to these edges such as "left" for minimum-x and "top" for minimum-y.

  • Method Details

    • create

      public static <S> PAreaBD<S> create​(java.math.BigDecimal x, java.math.BigDecimal y, java.math.BigDecimal size_x, java.math.BigDecimal size_y)
      Create an area of size size_x on the X axis and size size_y on the Y axis, placing the minimum corner at (x, y).
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      x - The X value of the minimum corner
      y - The Y value of the minimum corner
      size_x - The size of the area on the X axis
      size_y - The size of the area on the Y axis
      Returns:
      An area
    • contains

      public static <S> boolean contains​(PAreaBD<S> a, PAreaBD<S> b)

      Determine whether or not one area contains another.

      Containing is reflexive: contains(a, a) == true.

      Containing is transitive: contains(a, b) → contains(b, c) → contains(a, c).

      Containing is not necessarily symmetric.

      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      a - Area A
      b - Area B
      Returns:
      true iff a contains b
    • moveRelative

      public static <S> PAreaBD<S> moveRelative​(PAreaBD<S> area, java.math.BigDecimal x, java.math.BigDecimal y)
      Move the given area by (x, y).
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      x - The amount to move on the X axis
      y - The amount to move on the Y axis
      Returns:
      A moved area
    • moveRelativeClampedX

      public static <S> PAreaBD<S> moveRelativeClampedX​(PAreaBD<S> container, PAreaBD<S> area, java.math.BigDecimal x)
      Move the given area by x, without allowing area to leave container.
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      container - The container area
      area - The area
      x - The amount to move on the X axis
      Returns:
      A moved area
      Since:
      3.0.0
    • moveRelativeClampedY

      public static <S> PAreaBD<S> moveRelativeClampedY​(PAreaBD<S> container, PAreaBD<S> area, java.math.BigDecimal y)
      Move the given area by y, without allowing area to leave container.
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      container - The container area
      area - The area
      y - The amount to move on the Y axis
      Returns:
      A moved area
      Since:
      3.0.0
    • moveRelativeClamped

      public static <S> PAreaBD<S> moveRelativeClamped​(PAreaBD<S> container, PAreaBD<S> area, java.math.BigDecimal x, java.math.BigDecimal y)
      Move the given area by (x, y), without allowing area to leave container.
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      container - The container area
      area - The area
      x - The amount to move on the X axis
      y - The amount to move on the Y axis
      Returns:
      A moved area
      Since:
      3.0.0
    • moveAbsolute

      public static <S> PAreaBD<S> moveAbsolute​(PAreaBD<S> area, java.math.BigDecimal x, java.math.BigDecimal y)
      Move the given area to (x, y).
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      x - The position to which to move on the X axis
      y - The position to which to move on the Y axis
      Returns:
      A moved area
    • moveToOrigin

      public static <S> PAreaBD<S> moveToOrigin​(PAreaBD<S> area)
      Move the given area to (0, 0).
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      Returns:
      A moved area
    • cast

      public static <S,​ T> PAreaBD<T> cast​(PAreaBD<S> area)
      Brand a given area as belonging to a different coordinate space. Mixing up coordinate spaces is a common source of difficult-to-locate bugs. Use at your own risk.
      Type Parameters:
      S - The starting coordinate space
      T - The resulting coordinate space
      Parameters:
      area - An area
      Returns:
      area
    • alignHorizontallyCenter

      @Deprecated public static <S> PAreaBD<S> alignHorizontallyCenter​(PAreaBD<S> outer, PAreaBD<S> inner)
      Align the area inner horizontally in the center of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignHorizontallyMinX

      @Deprecated public static <S> PAreaBD<S> alignHorizontallyMinX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignHorizontallyMinXOffset

      @Deprecated public static <S> PAreaBD<S> alignHorizontallyMinXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner horizontally against the inside minimum-x edge of outer. The area will be at least offset units from the minimum-x edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
    • alignHorizontallyMaxX

      @Deprecated public static <S> PAreaBD<S> alignHorizontallyMaxX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignHorizontallyMaxXOffset

      @Deprecated public static <S> PAreaBD<S> alignHorizontallyMaxXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner horizontally against the inside maximum-x edge of outer. The area will be at least offset units from the maximum-x edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
    • alignVerticallyMinY

      @Deprecated public static <S> PAreaBD<S> alignVerticallyMinY​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignVerticallyMinYOffset

      @Deprecated public static <S> PAreaBD<S> alignVerticallyMinYOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner vertically against the inside minimum-y edge of outer. The area will be at least offset units from the minimum-y edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
    • alignVerticallyMaxY

      @Deprecated public static <S> PAreaBD<S> alignVerticallyMaxY​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignVerticallyMaxYOffset

      @Deprecated public static <S> PAreaBD<S> alignVerticallyMaxYOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner vertically against the inside maximum-y edge of outer. The area will be at least offset units from the maximum-y edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
    • alignVerticallyCenter

      @Deprecated public static <S> PAreaBD<S> alignVerticallyCenter​(PAreaBD<S> outer, PAreaBD<S> inner)
      Align the area inner vertically in the center of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignOnXCenter

      public static <S> PAreaBD<S> alignOnXCenter​(PAreaBD<S> outer, PAreaBD<S> inner)
      Align the area inner along the X axis in the center of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnXMinX

      public static <S> PAreaBD<S> alignOnXMinX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Equivalent to calling alignOnXMinXOffset(PAreaBD, PAreaBD, java.math.BigDecimal) with a zero offset.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnXMinXOffset

      public static <S> PAreaBD<S> alignOnXMinXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner along the X axis against the inside minimum-x edge of outer. The area will be at least offset units from the minimum-x edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnXMaxX

      public static <S> PAreaBD<S> alignOnXMaxX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Equivalent to calling alignOnXMaxXOffset(PAreaBD, PAreaBD, java.math.BigDecimal) with a zero offset.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnXMaxXOffset

      public static <S> PAreaBD<S> alignOnXMaxXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner along the X axis against the inside maximum-x edge of outer. The area will be at least offset units from the maximum-x edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnYMinY

      public static <S> PAreaBD<S> alignOnYMinY​(PAreaBD<S> outer, PAreaBD<S> inner)
      Equivalent to calling alignOnYMinYOffset(PAreaBD, PAreaBD, java.math.BigDecimal) with a zero offset.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnYMinYOffset

      public static <S> PAreaBD<S> alignOnYMinYOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner along the Y axis against the inside minimum-y edge of outer. The area will be at least offset units from the minimum-y edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnYMaxY

      public static <S> PAreaBD<S> alignOnYMaxY​(PAreaBD<S> outer, PAreaBD<S> inner)
      Equivalent to calling alignOnYMaxYOffset(PAreaBD, PAreaBD, java.math.BigDecimal) with a zero offset.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnYMaxYOffset

      public static <S> PAreaBD<S> alignOnYMaxYOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset)
      Align the area inner along the Y axis against the inside maximum-y edge of outer. The area will be at least offset units from the maximum-y edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset - The offset from the edge
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignOnYCenter

      public static <S> PAreaBD<S> alignOnYCenter​(PAreaBD<S> outer, PAreaBD<S> inner)
      Align the area inner along the Y axis in the center of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
      Since:
      1.1.0
    • alignMinYMinX

      public static <S> PAreaBD<S> alignMinYMinX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignMinYMinXOffset

      public static <S> PAreaBD<S> alignMinYMinXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset_x, java.math.BigDecimal offset_y)
      Align the area inner such that the minimum-y edge is at least offset_y from the inside minimum-y edge of outer and the minimum-x edge is at least offset_x from the inside minimum-x edge of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset_x - The offset from the minimum-x edge
      offset_y - The offset from the minimum-y edge
      Returns:
      An aligned area
    • alignMinYMaxX

      public static <S> PAreaBD<S> alignMinYMaxX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignMinYMaxXOffset

      public static <S> PAreaBD<S> alignMinYMaxXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset_x, java.math.BigDecimal offset_y)
      Align the area inner such that the minimum-y edge is at least offset_y from the inside minimum-y edge of outer and the maximum-x edge is at least offset_x from the inside maximum-x edge of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset_x - The offset from the maximum-x edge
      offset_y - The offset from the minimum-y edge
      Returns:
      An aligned area
    • alignMaxYMinX

      public static <S> PAreaBD<S> alignMaxYMinX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignMaxYMinXOffset

      public static <S> PAreaBD<S> alignMaxYMinXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset_x, java.math.BigDecimal offset_y)
      Align the area inner such that the maximum-y edge is at least offset_y from the inside maximum-y edge of outer and the minimum-x edge is at least offset_x from the inside minimum-x edge of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset_x - The offset from the minimum-x edge
      offset_y - The offset from the maximum-y edge
      Returns:
      An aligned area
    • alignMaxYMaxX

      public static <S> PAreaBD<S> alignMaxYMaxX​(PAreaBD<S> outer, PAreaBD<S> inner)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • alignMaxYMaxXOffset

      public static <S> PAreaBD<S> alignMaxYMaxXOffset​(PAreaBD<S> outer, PAreaBD<S> inner, java.math.BigDecimal offset_x, java.math.BigDecimal offset_y)
      Align the area inner such that the maximum-y edge is at least offset_y from the inside maximum-y edge of outer and the maximum-x edge is at least offset_x from the inside maximum-x edge of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      offset_x - The offset from the maximum-x edge
      offset_y - The offset from the maximum-y edge
      Returns:
      An aligned area
    • alignCenter

      public static <S> PAreaBD<S> alignCenter​(PAreaBD<S> outer, PAreaBD<S> inner)
      Align the area inner such that the center of the area is equal to the center of outer.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The outer area
      inner - The inner area
      Returns:
      An aligned area
    • hollowOut

      public static <S> PAreaBD<S> hollowOut​(PAreaBD<S> outer, java.math.BigDecimal min_x_offset, java.math.BigDecimal max_x_offset, java.math.BigDecimal min_y_offset, java.math.BigDecimal max_y_offset)
      Construct a new area that fits inside outer based on the given offsets from each edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The containing area
      min_x_offset - The offset from the minimum-x edge (must be non-negative)
      max_x_offset - The offset from the maximum-x edge (must be non-negative)
      min_y_offset - The offset from the minimum-y edge (must be non-negative)
      max_y_offset - The offset from the maximum-y edge (must be non-negative)
      Returns:
      A new area
    • hollowOutEvenly

      public static <S> PAreaBD<S> hollowOutEvenly​(PAreaBD<S> outer, java.math.BigDecimal offset)
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      outer - The containing area
      offset - The offset from each edge (must be non-negative)
      Returns:
      A new area
    • setSizeFromCenter

      public static <S> PAreaBD<S> setSizeFromCenter​(PAreaBD<S> area, java.math.BigDecimal sizeX, java.math.BigDecimal sizeY)

      Set the sizeX and sizeY of area to sizeX and sizeY, respectively.

      The area is resized from its own center.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      sizeX - The new sizeX (must be non-negative)
      sizeY - The new sizeY (must be non-negative)
      Returns:
      A resized area
    • setSizeFromMinYMinX

      public static <S> PAreaBD<S> setSizeFromMinYMinX​(PAreaBD<S> area, java.math.BigDecimal sizeX, java.math.BigDecimal sizeY)

      Set the sizeX and sizeY of area to sizeX and sizeY, respectively.

      The area is resized by moving its minimum-y-minimum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      sizeX - The new sizeX (must be non-negative)
      sizeY - The new sizeY (must be non-negative)
      Returns:
      A resized area
    • setSizeFromMinYMaxX

      public static <S> PAreaBD<S> setSizeFromMinYMaxX​(PAreaBD<S> area, java.math.BigDecimal sizeX, java.math.BigDecimal sizeY)

      Set the sizeX and sizeY of area to sizeX and sizeY, respectively.

      The area is resized by moving its minimum-y-maximum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      sizeX - The new sizeX (must be non-negative)
      sizeY - The new sizeY (must be non-negative)
      Returns:
      A resized area
    • setSizeFromMaxYMaxX

      public static <S> PAreaBD<S> setSizeFromMaxYMaxX​(PAreaBD<S> area, java.math.BigDecimal sizeX, java.math.BigDecimal sizeY)

      Set the sizeX and sizeY of area to sizeX and sizeY, respectively.

      The area is resized by moving its maximum-y-maximum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      sizeX - The new sizeX (must be non-negative)
      sizeY - The new sizeY (must be non-negative)
      Returns:
      A resized area
    • setSizeFromMaxYMinX

      public static <S> PAreaBD<S> setSizeFromMaxYMinX​(PAreaBD<S> area, java.math.BigDecimal sizeX, java.math.BigDecimal sizeY)

      Set the sizeX and sizeY of area to sizeX and sizeY, respectively.

      The area is resized by moving its maximum-y-minimum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      sizeX - The new sizeX (must be non-negative)
      sizeY - The new sizeY (must be non-negative)
      Returns:
      A resized area
    • scaleFromMinYMinX

      public static <S> PAreaBD<S> scaleFromMinYMinX​(PAreaBD<S> area, java.math.BigDecimal x_diff, java.math.BigDecimal y_diff)

      Scale area by adding x_diff to the sizeX, and y_diff to the sizeY. The size of the resulting area is clamped so that its sizeX and sizeY are always non-negative.

      The area is resized by moving its minimum-y-minimum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      x_diff - The X difference
      y_diff - The Y difference
      Returns:
      A resized area
    • scaleFromMinYMaxX

      public static <S> PAreaBD<S> scaleFromMinYMaxX​(PAreaBD<S> area, java.math.BigDecimal x_diff, java.math.BigDecimal y_diff)

      Scale area by adding x_diff to the sizeX, and y_diff to the sizeY. The size of the resulting area is clamped so that its sizeX and sizeY are always non-negative.

      The area is resized by moving its minimum-y-maximum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      x_diff - The X difference
      y_diff - The Y difference
      Returns:
      A resized area
    • scaleFromMaxYMinX

      public static <S> PAreaBD<S> scaleFromMaxYMinX​(PAreaBD<S> area, java.math.BigDecimal x_diff, java.math.BigDecimal y_diff)

      Scale area by adding x_diff to the sizeX, and y_diff to the sizeY. The size of the resulting area is clamped so that its sizeX and sizeY are always non-negative.

      The area is resized by moving its maximum-y-minimum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      x_diff - The X difference
      y_diff - The Y difference
      Returns:
      A resized area
    • scaleFromMaxYMaxX

      public static <S> PAreaBD<S> scaleFromMaxYMaxX​(PAreaBD<S> area, java.math.BigDecimal x_diff, java.math.BigDecimal y_diff)

      Scale area by adding x_diff to the sizeX, and y_diff to the sizeY. The size of the resulting area is clamped so that its sizeX and sizeY are always non-negative.

      The area is resized by moving its maximum-y-maximum-x corner.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      x_diff - The X difference
      y_diff - The Y difference
      Returns:
      A resized area
    • scaleFromCenter

      public static <S> PAreaBD<S> scaleFromCenter​(PAreaBD<S> area, java.math.BigDecimal x_diff, java.math.BigDecimal y_diff)

      Scale area by adding x_diff to the sizeX, and y_diff to the sizeY. The size of the resulting area is clamped so that its sizeX and sizeY are always non-negative.

      The area is resized from its own center.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      x_diff - The X difference
      y_diff - The Y difference
      Returns:
      A resized area
    • overlaps

      public static <S> boolean overlaps​(PAreaBD<S> a, PAreaBD<S> b)

      Determine whether or not two areas overlap.

      Overlapping is reflexive: overlaps(a, a) == true.

      Overlapping is symmetric: overlaps(a, b) == overlaps(b, a).

      Overlapping is not necessarily transitive.

      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      a - An area
      b - An area
      Returns:
      true iff a overlaps b
    • couldFitInside

      public static <S> boolean couldFitInside​(PAreaBD<S> a, PAreaBD<S> b)

      Determine whether or not one area could fit inside another.

      Fitting is reflexive: couldFitInside(a, a) == true.

      Fitting is transitive: couldFitInside(a, b) → couldFitInside(b, c) → couldFitInside(a, c).

      Fitting is not necessarily symmetric.

      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      a - An area
      b - An area
      Returns:
      true iff a could fit inside b
    • containing

      public static <S> PAreaBD<S> containing​(PAreaBD<S> a, PAreaBD<S> b)
      Construct a area that will contain both a and b.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      a - An area
      b - An area
      Returns:
      An area containing a and b
    • containsPoint

      public static <S> boolean containsPoint​(PAreaBD<S> a, java.math.BigDecimal x, java.math.BigDecimal y)

      Determine whether or not a area contains a given point.

      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      a - An area
      x - The X coordinate of the point
      y - The Y coordinate of the point
      Returns:
      true iff a contains (x, y)
    • fitBetweenHorizontal

      @Deprecated public static <S> PAreaBD<S> fitBetweenHorizontal​(PAreaBD<S> fit, PAreaBD<S> a, PAreaBD<S> b)
      Attempt to fit fit between a and b, horizontally.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      fit - The area to be fitted
      a - An area
      b - An area
      Returns:
      A fitted area
    • fitBetweenVertical

      @Deprecated public static <S> PAreaBD<S> fitBetweenVertical​(PAreaBD<S> fit, PAreaBD<S> a, PAreaBD<S> b)
      Attempt to fit fit between a and b, vertically.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      fit - The area to be fitted
      a - An area
      b - An area
      Returns:
      A fitted area
    • fitBetweenOnX

      public static <S> PAreaBD<S> fitBetweenOnX​(PAreaBD<S> fit, PAreaBD<S> a, PAreaBD<S> b)
      Attempt to fit fit between a and b, horizontally.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      fit - The area to be fitted
      a - An area
      b - An area
      Returns:
      A fitted area
    • fitBetweenOnY

      public static <S> PAreaBD<S> fitBetweenOnY​(PAreaBD<S> fit, PAreaBD<S> a, PAreaBD<S> b)
      Attempt to fit fit between a and b, vertically.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      fit - The area to be fitted
      a - An area
      b - An area
      Returns:
      A fitted area
    • splitAlongParallelToX

      public static <S> PAreaXSplitBD<S,​PAreaBD<S>> splitAlongParallelToX​(PAreaBD<S> area, java.math.BigDecimal y)
      Split area along a line parallel to the X axis placed at y units from its own minimum-y edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      area - The area to be split
      y - The relative Y coordinate of the splitting edge
      Returns:
      A pair of areas
    • splitAlongParallelToY

      public static <S> PAreaYSplitBD<S,​PAreaBD<S>> splitAlongParallelToY​(PAreaBD<S> area, java.math.BigDecimal x)
      Split area along a line parallel to the Y axis placed at x units from its own minimum-x edge.
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      area - The area to be split
      x - The relative X coordinate of the splitting edge
      Returns:
      A pair of areas
    • splitAlongXY

      public static <S> PAreaXYSplitBD<S,​PAreaBD<S>> splitAlongXY​(PAreaBD<S> area, java.math.BigDecimal x, java.math.BigDecimal y)
      Split area along a two axis-aligned perpendicular lines that intercept at (x, y).
      Type Parameters:
      S - The coordinate space of the areas
      Parameters:
      area - The area to be split
      x - The relative X coordinate of the splitting edge
      y - The relative Y coordinate of the splitting edge
      Returns:
      The four resulting quadrants
      Since:
      1.1.0
    • show

      public static <S> java.lang.String show​(PAreaBD<S> area)
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      Returns:
      A terse string describing the position and size of the area
    • size

      public static <S> PAreaSizeBD<S> size​(PAreaBD<S> area)
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      Returns:
      The size of the area
    • showToBuilder

      public static <S> java.lang.String showToBuilder​(PAreaBD<S> area, java.lang.StringBuilder sb)
      Type Parameters:
      S - The coordinate space of the area
      Parameters:
      area - The area
      sb - A string builder
      Returns:
      A terse string describing the position and size of the area