¿Conoce una implementación de código abierto de force-directed layout en C++ utilizada para GUI? Preferiblemente BSD/MIT/Apache u otra licencia (no GPL).Implementación del diseño dirigido a la fuerza en C++
Respuesta
La excelente Boost.Graph library proporciona una amplia gama de algoritmos, entre los que se incluyen algunos algoritmos de diseño. Recomiendo usar Kamada-Kawai spring layout o Fruchterman-Reingold force-directed layout.
Boost licence es muy permisivo, así que no te preocupes por eso.
El primer resultado de Google es VTK. Otra me lleva al vtkGraphLayoutView.
visión general
https://www.kitware.com/InfovisWiki/index.php/Main_Page
Hay algunos pasos de instalación si desea que esta solicitud, toda la información está en ese wiki. Es una aplicación desarrollada en VTK. La función específica que OverView tiene es la capacidad de representar un gráfico de información (no necesariamente geométrico) en 2 dimensiones.
Como se señala de forma dirkgently, VTK tiene un diseño de gráfico de fuerza dirigida. El beneficio de utilizar algo como OverView es que puedes crear fácilmente un complemento personalizado para OverView, que harías para leer tus datos y mostrarlos mediante la estrategia de diseño de fuerza dirigida.
Si no desea depender de OverView, es muy fácil extraer su código de plug-in y solo hacer referencia a OverView ya que todo el procesamiento se maneja fuera de su plug-in.
¿Has mirado neato de graphviz. Este guide incluso entra en detalles para usar graphviz como una biblioteca. El guide incluye el uso del algoritmo de diseño fdp, que parece ser exactamente lo que desea. Todo graphviz cae bajo el Common Public License.
- 1. Implementación de diseño dirigido a la fuerza en Java
- 2. Conceptos básicos del diseño dirigido por la fuerza de D3
- 3. Agregar nuevos nodos al diseño dirigido a la fuerza
- 4. Diseño dirigido a la fuerza D3 con cuadro delimitador
- 5. Fix Node Position en D3 Diseño orientado a la fuerza
- 6. Implementación del diseño impulsado por el dominio
- 7. Arquitectura Orientada a Servicios y Diseño Dirigido por Dominio
- 8. Actualización de enlaces en un gráfico dirigido por fuerza a partir de datos de json dinámicos
- 9. Optimización del diseño de gráficos en C#
- 10. C# WCF plugin diseño e implementación
- 11. ¿Cuál es el motor gráfico de red dirigido a la fuerza más rápido para grandes conjuntos de datos?
- 12. Agregue texto/etiqueta en enlaces en el gráfico dirigido a fuerza D3
- 13. Diseño automático de "fuerza repelente" en Cocoa
- 14. ¿Diseño e implementación CLI?
- 15. Cómo funciona el Desarrollo Dirigido por Comportamiento (BDD) con el Diseño Dirigido por Dominio (DDD)
- 16. d3.js ¿Cómo agregar acción de clic a un círculo de diseño de fuerza?
- 17. Implementación simple para detectar ciclos en un gráfico dirigido en C#
- 18. Implementación del gráfico direccionado
- 19. ¿Hay un evento de tocar y tocar dos veces en el gráfico dirigido a la fuerza de d3.js
- 20. Diseño e implementación de ClojureScript
- 21. Implementación del servidor SSH en C# /. Net
- 22. Agregue fuerza a pesar del archivo .gitignore
- 23. Muestras para el Diseño Dirigido por Dominio (especialmente .NET enfocado)
- 24. Carga basada en el tamaño - diseño de fuerza d3
- 25. rotación de fuerza del iPhone
- 26. Gráfico dirigido a la muestra y código de clasificación topológica
- 27. Implementación del cliente RTMFP en C
- 28. Encontrando la implementación del algoritmo del árbol de intervalos C++
- 29. Fuerza LINQ a no retrasar la ejecución
- 30. Actualizar nodos existentes en un diseño de fuerza d3
¿Por qué es esto downvoted? Es de código abierto, gratuito y tiene una licencia BSD. – dirkgently
+1 porque los votos a favor anónimos me ponen triste. –
Al haber usado VTK, creo que es una buena solución para su problema. Además, es completamente multiplataforma Linux/Mac/Windows. Y tiene enlaces para Python/Java y tcl/tk en caso de que alguna vez los necesite. –