2009-01-21 18 views
5

Estoy buscando una biblioteca de diseño de gráfico simple para C++. Quiero insertar la biblioteca en nuestro visualizador basado en wxWidgets. En resumen, estoy buscando algo como graphviz, excepto dinámico, es decir, cuando ocurre un evento, solo se debe cargar el cambio en el gráfico, no la visualización completa. Hay dynagraph, pero parece un proyecto muerto. Me han sugerido anteriormente usar VTK, pero es un peso pesado.Visualización de gráfico dinámico simple para C++

Busco una biblioteca de código abierto, no copyleft, disponible para uso comercial (GPL está fuera, LGPL debería estar bien). Estoy abierto a sugerencias que google no dará.

Respuesta

4

El diseño que Graphviz genera se basa en la estructura global; cualquier adición puede cambiar drásticamente la salida (a menos que use coordenadas fijas, en cuyo caso probablemente no haría esta pregunta). Básicamente, si quieres colocación automática de elementos, es necesario aceptar una de estas soluciones:

  • Cuando se coloca un nuevo elemento, una simulación de la física se ejecuta en tiempo real, haciendo que los nodos a rebotar violentamente hasta que se asientan en sus nuevas ubicaciones Esto será lento, pero mostrará cambios "agradables".
  • Cuando se coloca un nuevo elemento, se vuelve a dibujar todo el gráfico (física/lo que esté oculto, pero todo se modifica). Esto será más rápido debido a no tener que volver a dibujar, pero las ubicaciones relativas de los nodos pueden ser completamente diferentes.
  • Cuando se coloca un nuevo elemento, los elementos existentes no se modifican. Después de suficientes actualizaciones dinámicas, su gráfico se verá como basura, porque la ubicación automática es un problema de optimización global.

Lo siento, no puedo ayudarte con tu pregunta, pero quizás esto ayude a explicar por qué lo que estás buscando simplemente no existe (o puede ser bueno).

0

Para superar algunos de los problemas al usar graphviz (descrito por Tom). Configuramos los coords del mundo de los visualizadores para que coincidan con los coords mundiales de graphviz.

luego. suponiendo que cada elemento visual tiene un identificador único, construya un gráfico usando estos elementos. muestra el gráfico como texto. realinear todo basado en el análisis de salida. ?

-

Michael

Cuestiones relacionadas