Frage

Ich bin auf der Suche nach einer einfachen Diagramm-Layout-Bibliothek für C ++. Ich möchte die Bibliothek in unsere Visualizer auf wxWidgets basiert einzubetten. Zusammenfassend, ich suche nach so etwas wie graphviz , außer dynamisch - das ist, wenn ein Ereignis eintritt, nur die Änderung muss in graph geladen wird, nicht die komplette Anzeige. Es gibt Dynagraph , aber es scheint ein totes Projekt. Ich habe früher zu verwenden VTK vorgeschlagen worden -. Aber es ist ein Schwergewicht

Ich bin für Open Source, Nicht-Copyleft-Art Bibliothek für kommerzielle Nutzung (GPL ist, sollte LGPL in Ordnung sein). Ich bin offen für Vorschläge, die Google nicht geben.

War es hilfreich?

Lösung

Das Layout, das Graphviz ist auf der Grundlage der globalen Struktur erzeugt - jede einzelne Zugabe dramatisch die Ausgabe ändern kann (es sei denn, Sie feste Koordinaten verwenden, wobei in diesem Fall würden Sie wahrscheinlich nicht diese Frage stellen). Grundsätzlich, wenn Sie die automatische Platzierung von Elementen wollen, müssen Sie eine dieser Lösungen akzeptieren:

  • Wenn ein neues Element platziert ist, eine Physik-Simulation in Echtzeit läuft, Knoten verursachte wild hüpfen herum, bis sie in ihre neue Standorte zu begleichen. Dies wird langsam, aber es wird „erfreulich“ Änderungen.
  • Wenn ein neues Element gesetzt ist, wird die gesamte Grafik neu gezeichnet (Physik / was auch immer versteckt, aber die ganze Sache wird geändert). Dies wird schneller durch nicht neu gezeichnet zu haben, aber die relativen Positionen von Knoten können völlig unterschiedlich sein.
  • Wenn ein neues Element gesetzt wird, werden die vorhandenen Elemente nicht geändert. Nachdem genügend dynamische Updates, wird Ihr Diagramm wie Mist suchen, weil die automatische Platzierung ein globales Optimierungsproblem ist.

Leider kann ich nicht mit Ihrer Frage helfen, aber vielleicht hilft dies zu erklären, warum, was Sie suchen kann einfach nicht existieren (oder eine beliebige gut).

Andere Tipps

, um einige der isues zu überwinden, wenn graphviz (descibed von Tom) verwendet wird. Wir setzen die coords Visualizer Welt mit graphviz Welt coords zusammen.

dann. jedes visuelles Element unter der Annahme, hat eine eindeutige Kennung, eine Kurve zu bauen, diese Elemente verwenden. Ausgabe der Graph als Text. alles basierend auf einer Ausgabe Parsing neu auszurichten. ?

-

Michael

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top