Domanda

Sto cercando una semplice libreria di layout grafici per C ++. Voglio incorporare la libreria nel nostro visualizzatore basato su wxWidgets. In sintesi, sto cercando qualcosa come graphviz , tranne dinamico, ovvero quando si verifica un evento, deve essere caricata solo la modifica del grafico, non la visualizzazione completa. C'è dynagraph , ma sembra un progetto morto. In precedenza mi è stato suggerito di utilizzare VTK, ma è un peso massimo.

Sto cercando una libreria open source e non copyleft disponibile per uso commerciale (GPL è fuori uso, LGPL dovrebbe essere ok). Sono aperto a suggerimenti che Google non darà.

È stato utile?

Soluzione

Il layout generato da Graphviz si basa sulla struttura globale: ogni singola aggiunta può cambiare radicalmente l'output (a meno che non si utilizzino coordinate fisse, nel qual caso probabilmente non si farebbe questa domanda). Fondamentalmente, se si desidera il posizionamento automatico degli elementi, è necessario accettare una di queste soluzioni:

  • Quando viene inserito un nuovo elemento, una simulazione fisica viene eseguita in tempo reale, facendo rimbalzare selvaggiamente i nodi fino a quando non si stabiliscono nelle loro nuove posizioni. Questo sarà lento, ma mostrerà "piacevole". modifiche.
  • Quando viene inserito un nuovo elemento, l'intero grafico viene ridisegnato (fisica / qualunque cosa sia nascosta, ma l'intera cosa viene modificata). Questo sarà più veloce a causa del fatto che non è necessario ridisegnare, ma le posizioni relative dei nodi possono essere completamente diverse.
  • Quando viene inserito un nuovo elemento, gli elementi esistenti non vengono modificati. Dopo sufficienti aggiornamenti dinamici, il tuo grafico sembrerà una merda, perché il posizionamento automatico è un problema di ottimizzazione globale.

Mi dispiace, non posso aiutarti con la tua domanda, ma forse questo aiuta a spiegare perché ciò che stai cercando potrebbe semplicemente non esistere (o essere buono).

Altri suggerimenti

Per superare alcuni dei problemi quando si utilizza graphviz (descritto da Tom). Impostiamo le coordinate del mondo del visualizzatore in modo che coincidano con le coordinate del mondo di graphviz.

allora. supponendo che ogni elemento visivo abbia un identificatore univoco, costruisci un grafico usando questi elementi. visualizza il grafico come testo. riallineare tutto in base all'analisi dell'output. ?

-

Michael

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top