Baseclasses
Definition
The class PlanarDrawLayout represents the layout algorithm PlanarDraw (Gutwenger and Mutzel [GM97]), which is a generalization of the algorithm ConvexDraw (Chrobak and Kant [CK97]).
This algorithm draws a planar graph G straight-line without crossings. G must not contain self-loops or multiple edges. The grid layout size is at most (n - 1) x (n - 1) for a graph with n nodes (n > = 3).
The algorithm runs in three phases. In the first phase, the graph is augmented by adding new artificial edges to get a biconnected plane graph (using a planar biconnectivity augmentation module). Then, a new shelling order [GM97] (also called canonical ordering) for biconnected planar graphs is computed. In the third phase the vertices are placed incrementally according to the shelling order.
General Information
Algorithm | |
name | PlanarDraw |
long name | PlanarDraw (Gutwenger/Mutzel) |
author | C. Gutwenger, P. Mutzel |
Implementation | |
author | C. Gutwenger |
date | March 1997 |
version | 1.0 |
Pre- and Postcondition
precondition | = | { planar, simple, noselfloops } |
postcondition(PRE) | = | { straight - line, nocrossings, convex } |
Exchangeable Modules Instances of type PlanarDrawLayout provide the following module options:
guaranteed precondition: | {planar, simple, noselfloops, directed} |
required postcondition: | {planar, biconnected, simple, noselfloops} |
initial module: | PlanAug |
Optional Parameters Instances of PlanarDrawLayout provide the following optional parameters:
#include < AGD/PlanarDrawLayout.h >
Creation
PlanarDrawLayout | L | creates an instance L of type PlanarDrawLayout. |
Operations
Standard Interface (Inherited Methods) The detailed description of these methods can be found in the manual entries of the base classes (LayoutModule, GridLayoutModule).
bool | L.check(const graph& G, AgdKey& p) | |
void | L.call(const graph& G, LayoutInterface& A) | |
void | L.call(const graph& G, face f, LayoutInterface& A) | |
void | L.call_grid(const graph& G, GridLayout& gl) | |
void | L.call_grid(const graph& G, face f, GridLayout& gl) | |
IRect | L.bounding_box() | |
void | L.set_mapper(const GridCoordinateMapper& gcm) |
Access to Options
bool | L.set_augmenter(AugmentationModule& M) | |
bool | L.size_opt() | |
void | L.size_opt(bool so) | |
bool | L.side_opt() | |
void | L.side_opt(bool so) | |
bool | L.max_outer() | |
void | L.max_outer(bool mo) | |
double | L.base_ratio() | |
void | L.base_ratio(double br) |
Implementation
The computation of the layout takes time
(n),
where n is the number of nodes of the input graph.
© Copyright 1998-2001, Algorithmic Solutions Software GmbH. All rights reserved.
2001-08-13