Os algoritmos de layout de link são implementados pelas seguintes
classes:
- ibm_ilog.graphlayout.shortlink.ShortLinkLayout para links curtos
- ibm_ilog.graphlayout.longlink.LongLinkLayout para links longos
Algoritmo de Layout de Link Curto
O algoritmo de Layout de Link Curto é baseado em uma otimização combinatória
que escolhe a forma “ideal” dos
links para minimizar a função de custo. Esta função de custo é proporcional
ao número de cruzamentos de link para link e de link para nó.
Por razões de eficiência, a forma básica de cada link
é escolhida a partir de um conjunto de formas predefinidas. Estas formas são diferentes
para cada opção de estilo de link. Para o estilo de link ortogonal, os links
são redimensionados para uma linha poligonal de até cinco segmentos alternados horizontais
e verticais (consulte Layout de Link Curto com Links Ortogonais). For the
direct link style, the links are reshaped to a polygonal line composed
of three segments: a straight-line segment that starts and ends with small horizontal
or vertical segments (see O mesmo gráfico no layout de link curto com links diretos).
A forma de um link também depende da posição relativa
dos nós de origem e de destino. Por exemplo, quando dois nós estão muito próximos
ou se sobrepõem, a forma do link é escolhida para
fornecer a melhor visibilidade do link.
A forma exata de um link é calculada considerando restrições adicionais. The layout algorithm tries to:
- Minimize the number of crossings between the links incident to a specific side of a node.
- Espaçar os segmentos finais dos links incidentes para um lado específico de um nó igualmente na borda do nó.
Algoritmo de Layout de Link Longo
O algoritmo de Layout de Link Longo primeiro trata cada link
individualmente. Para cada link, primeiro ele calcula os pontos de conexão
nos nós de extremidade que estão na grade e ordena-os de acordo com
um valor de penalidade. Connection points on used grid points have a high
penalty and, therefore, are unlikely to be used.
Para os links ortogonais (consulte Layout de link longo com links ortogonais), o algoritmo
de Layout de Link Longo usa então uma passagem de grade para procurar uma rota
sobre pontos de grade livres, do ponto de conexão inicial ao ponto de conexão final. Therefore, in contrast to the short link mode, orthogonal links
can have any shape with many bends if it is necessary to bypass obstacle
nodes to avoid overlapping. For the direct links, see O mesmo gráfico no layout de link curto com links diretos, it shortens
the search by using a direct segment between the connection points.
Quando todos os links forem posicionados, uma fase de redução de cruzamentos
examinará pares de links e eliminará os cruzamentos de links, trocando partes
das rotas entre os dois links.
O algoritmo de Layout de Link Longo depende do fato de que os
links se ajustem ao espaçamento da grade e que partes das rotas entre diferentes
links possam ser trocadas. Portanto, o algoritmo de Layout de Link Longo
não considera a largura do link, porque seria muito difícil
localizar as partes de dois links que podem ser trocadas. É recomendável
configurar o espaçamento da grade maior que a maior largura do link.
Exemplo de Layout de Link
O exemplo de código a seguir mostra o uso da classe ibm_ilog.graphlayout.shortlink.ShortLinkLayout.
var layout = new ibm_ilog.graphlayout.shortlink.ShortLinkLayout(); graph.setLinkLayout(layout); graph.performGraphLayout();