Class InteriorAngleLinePathConnector

Direct Known Subclasses:
InteriorAngleLinePathConnector.Maximize, InteriorAngleLinePathConnector.Minimize

public abstract class InteriorAngleLinePathConnector extends AbstractLinePathConnector
Line subset connector that selects between multiple connection options based on the resulting interior angle. An interior angle in this case is the angle created between an incoming line subset and an outgoing line subset as measured on the minus (interior) side of the incoming line. If looking along the direction of the incoming line subset, smaller interior angles point more to the left and larger ones point more to the right.

This class provides two concrete implementations: InteriorAngleLinePathConnector.Maximize and InteriorAngleLinePathConnector.Minimize, which choose connections with the largest or smallest interior angles respectively.

  • Constructor Details

    • InteriorAngleLinePathConnector

      public InteriorAngleLinePathConnector()
  • Method Details

    • selectConnection

      Method called to select a connection to use for a given segment when multiple non-length-zero connections are available. In this case, the selection of the outgoing connection depends only on the desired characteristics of the connected path.
      Specified by:
      selectConnection in class AbstractPathConnector<AbstractLinePathConnector.ConnectableLineSubset>
      Parameters:
      incoming - the incoming segment
      outgoing - list of available outgoing connections; will always contain at least two elements
      Returns:
      the connection to use
    • isBetterAngle

      protected abstract boolean isBetterAngle(double newAngle, double previousAngle)
      Return true if newAngle represents a better interior angle than previousAngle.
      Parameters:
      newAngle - the new angle under consideration
      previousAngle - the previous best angle
      Returns:
      true if newAngle represents a better interior angle than previousAngle
    • connectMaximized

      public static List<LinePath> connectMaximized(Collection<LineConvexSubset> subsets)
      Convenience method for connecting a collection of line subsets with interior angles maximized when possible. This method is equivalent to new Maximize().connect(subsets).
      Parameters:
      subsets - line subsets to connect
      Returns:
      a list of connected line subset paths
      See Also:
    • connectMinimized

      public static List<LinePath> connectMinimized(Collection<LineConvexSubset> subsets)
      Convenience method for connecting a collection of line subsets with interior angles minimized when possible. This method is equivalent to new Minimize().connect(subsets).
      Parameters:
      subsets - line subsets to connect
      Returns:
      a list of connected line subset paths
      See Also: