Property | Value |
---|---|
Identifier: | org.eclipse.elk.sporeCompaction |
Meta Data Provider: | options.SporeMetaDataProvider |
ShrinkTree is a compaction algorithm that maintains the topology of a layout. The relocation of diagram elements is based on contracting a spanning tree.
The algorithm uses the programmatic structure of SPOrE, which stands for Structure, Processing Order, and Execution.
For this purpose, a Delaunay triangulation is implemented, which captures proximity information. 2. Now, the processing order for the last phase is determined and represented by a tree. 3. The execution phase traverses the previously constructed tree and applies an algorithm specific operation to each node.
The functional principle is based on a modification of an overlap removal algorithm presented by Nachmanson et al. in “Node overlap removal by growing a tree”. First, the set of vertices corresponding to the nodes’ centers is Delaunay triangulated. Second, a spanning tree of the triangulation edges is constructed. Third, the spanning tree is shrunk pulling the nodes closer together.
Compacting the inclusion tree of a hierarchical Ptolemy model:
Option | Default Value |
---|---|
Compaction Strategy | CompactionStrategy.DEPTH_FIRST |
Cost Function for Spanning Tree | SpanningTreeCostFunction.CIRCLE_UNDERLAP |
Debug Mode | false |
Node Spacing | 8 |
Orthogonal Compaction | false |
Padding | new ElkPadding(8) |
Root node for spanning tree construction | null |
Root selection for spanning tree | RootSelection.CENTER_NODE |
Structure Extraction Strategy | StructureExtractionStrategy.DELAUNAY_TRIANGULATION |
Tree Construction Strategy | TreeConstructionStrategy.MINIMUM_SPANNING_TREE |
Underlying Layout Algorithm | <not defined> |