summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/layered/node_positioning.lua
blob: 8fa55f9cbb93d4460e642cf70e15162fb2d9528a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
-- Copyright 2012 by Till Tantau
--
-- This file may be distributed and/or modified
--
-- 1. under the LaTeX Project Public License and/or
-- 2. under the GNU Public License
--
-- See the file doc/generic/pgf/licenses/LICENSE for more information

-- @release $Header$


local declare = require("pgf.gd.interface.InterfaceToAlgorithms").declare


---
-- @section subsection {Node Positioning (Coordinate Assignment)}
--
-- The second last step of the Sugiyama method decides about the final
-- $x$- and $y$-coordinates of the nodes. The main objectives of this
-- step are to position nodes so that the number of edge bends is kept
-- small and edges are drawn as vertically as possible. Another goal
-- is to avoid node and edge overlaps which is crucial in particular
-- if the nodes are allowed to have non-uniform sizes. The
-- y-coordinates of the nodes have no influence on the number of
-- bends. Obviously, nodes need to be separated enough geometrically
-- so that they do not overlap. It feels natural to aim at separating
-- all layers in the drawing by the same amount. Large nodes, however,
-- may force node positioning algorithms to override this uniform
-- level distance in order to avoid overlaps. 
--
-- For more details, please see Section 4.1.2 of Pohlmann's Diploma
-- thesis. 
--
-- @end



---

declare {
  key = "linear optimization node positioning",
  algorithm = require "pgf.gd.layered.NodePositioningGansnerKNV1993",
  phase = "node positioning",
  phase_default = true,

  summary = [["  
       This node positioning method, due to Gasner et al., is based on a
       linear optimization problem.
  "]],
  documentation = [["            
       For more details, please see Section 4.1.3 of Pohlmann's Diploma
       thesis. 
      
       This is the default algorithm for layer assignments.
   "]]
 }