Принуждение прямых И ортогональных краев с точкой - PullRequest
0 голосов
/ 27 августа 2018

У меня есть программа, которая автоматически генерирует точечные графики, представляющие структуру системы. Система определяется пользователем с использованием системы уравнений.

Я бы хотел, чтобы точка отображала только прямые и ортогональные ребра между узлами. Расположение узлов может быть где угодно, если эти два требования соблюдены.

Например, я хочу предотвратить краевые углы, которые генерирует следующий код:

digraph R {

  graph [splines=ortho, nodesep=1]
  node [shape=record];

   rA -> sA;
   sA -> vB;
   t  -> rA;
   uB -> vB;
   wB -> u;
   wB -> tA;

}

enter image description here

Я обнаружил, что одним из способов достижения этого является использование атрибута rank. Например:

digraph R {

  graph [splines=ortho, nodesep=1]
  node [shape=record];

  { rank=same rA sA tA }
  { rank=same uB vB wB }


   rA -> sA;
   sA -> vB;
   t  -> rA;
   uB -> vB;
   wB -> u;
   wB -> tA;

}

enter image description here

Однако использование атрибута rank не решает мою проблему, поскольку было бы очень трудно автоматизировать это для любого графика . Логика присвоения рангов (которая влияет на размещение узлов) каждому узлу будет чрезвычайно сложной (графики могут стать довольно большими). Я хочу знать, есть ли другой способ получения этого вывода, который не требует использования атрибута rank.

...