Class CircleLayouterAlgorithm

java.lang.Object
org.graffiti.plugin.algorithm.AbstractAlgorithm
de.ipk_gatersleben.ag_nw.graffiti.plugins.layouters.circle.CircleLayouterAlgorithm
All Implemented Interfaces:
UndoableEdit, Algorithm

public class CircleLayouterAlgorithm
extends AbstractAlgorithm
Places all nodes on a circle with a user specified radius.
Author:
Dirk Koschützki, Christian Klukas, Matthias Klapperstueck
Recent revisions:
2.7.0
  • Constructor Details

    • CircleLayouterAlgorithm

      public CircleLayouterAlgorithm()
      Creates a new CircleLayouterAlgorithm object.
    • CircleLayouterAlgorithm

      public CircleLayouterAlgorithm​(double defaultRadius)
      Creates a new CircleLayouterAlgorithm object.
      Parameters:
      defaultRadius - a value for the radius
  • Method Details

    • reset

      public void reset()
      Description copied from interface: Algorithm
      Resets the internal state of the algorithm.
      Specified by:
      reset in interface Algorithm
      Overrides:
      reset in class AbstractAlgorithm
    • getName

      public String getName()
      Returns the name of the algorithm.
      Returns:
      the name of the algorithm
    • check

      public void check() throws PreconditionException
      Checks, if a graph was given and that the radius is positive.
      Specified by:
      check in interface Algorithm
      Overrides:
      check in class AbstractAlgorithm
      Throws:
      PreconditionException - if no graph was given during algorithm invocation or the radius is negative
    • setRadius

      public void setRadius​(double radius)
    • execute

      public void execute()
      Performs the layout.
    • withMinimizingCrossings

      public void withMinimizingCrossings()
    • layoutOnCircles

      public void layoutOnCircles​(Collection<Node> workNodes, double defaultRadius, String operationname)
    • createCircleOrder

      public static Collection<Node> createCircleOrder​(Collection<Node> nodes)
      Creates an ordered list of a given list of nodes for creation of circular layouts, without the disruption of the order of nodes. The original order of nodes will be based on the center point (mean point of positions) of the nodes.
      Parameters:
      nodes -
      Returns:
    • energyOfNode

      public static double energyOfNode​(Node node, double newX, double newY)
    • getDistance

      public static double getDistance​(double x, double y, Node b)
    • getParameters

      public Parameter[] getParameters()
      Returns the parameter object for the radius.
      Specified by:
      getParameters in interface Algorithm
      Overrides:
      getParameters in class AbstractAlgorithm
      Returns:
      the parameter array
    • setParameters

      public void setParameters​(Parameter[] params)
      Sets the radius parameter to the given value.
      Specified by:
      setParameters in interface Algorithm
      Overrides:
      setParameters in class AbstractAlgorithm
      Parameters:
      params - An array with exact one DoubleParameter.
    • getCategory

      public String getCategory()
      Description copied from interface: Algorithm
      Returns the category an algorithm should assigned to. Return NULL if the algorithm should be sorted directly in the plugin menu.
      Specified by:
      getCategory in interface Algorithm
      Overrides:
      getCategory in class AbstractAlgorithm
      Returns:
      The category an algorithm should assigned to.
    • getSetCategory

      public Set<Category> getSetCategory()
      Description copied from interface: Algorithm
      Returns a set of categories to classify this algorithm . e.g. return new HashSet(Arrays.asList( Category.GRAPH, Category.NODE )); is an algorithm, working on graphs and more specific on nodes
      Specified by:
      getSetCategory in interface Algorithm
      Overrides:
      getSetCategory in class AbstractAlgorithm
      Returns:
      Set of Category Enums that classify this algorithm.
    • isLayoutAlgorithm

      public boolean isLayoutAlgorithm()
      Description copied from interface: Algorithm
      A LayoutAlgorithm should return true. All other types of algorithms should return false.
      Specified by:
      isLayoutAlgorithm in interface Algorithm
      Overrides:
      isLayoutAlgorithm in class AbstractAlgorithm
      Returns:
    • getPatternNodeDistance

      public double getPatternNodeDistance()
    • setPatternNodeDistance

      public void setPatternNodeDistance​(double patternNodeDistance)