Pergunta

Eu estou procurando uma biblioteca de layout de gráfico simples para C ++. Eu quero incorporar a biblioteca em nosso visualizador baseado em wxWidgets. Em resumo, eu estou procurando algo como graphviz , exceto dinâmica - que é quando ocorre um evento, somente a mudança das necessidades do gráfico a ser carregado, não o ecrã completo. Há dynagraph , mas parece um projeto morto. Tenho sido previamente sugerido o uso de VTK - mas é um peso pesado

.

Eu estou procurando código aberto, não-copyleft tipo de biblioteca disponível para uso comercial (GPL está fora, LGPL deve ser ok). Estou aberto a sugestões de que o Google não vai dar.

Foi útil?

Solução

O layout que Graphviz gera é baseado na estrutura mundial - uma única adição pode mudar drasticamente a saída (a menos que você está usando coordenadas fixas, caso em que você provavelmente não estaria fazendo esta pergunta). Basicamente, se você quiser colocação automática de elementos, você precisa aceitar uma destas soluções:

  • Quando um novo elemento é colocado, uma simulação física é executado em tempo real, fazendo com que nós a saltar ao redor descontroladamente até que resolver em seus novos locais. Este será lento, mas ele vai mostrar "agradar" alterações.
  • Quando um novo elemento é colocado, o gráfico inteiro é re-desenhado (física / tudo o que está escondido, mas a coisa toda é modificado). Este será mais rápido devido a não ter que redesenhar, mas as localizações relativas de nós pode ser completamente diferente.
  • Quando um novo elemento é colocado, os elementos existentes não são modificados. Após as atualizações dinâmicas suficientes, o gráfico vai olhar como porcaria, porque colocação automática é um problema global de otimização.

Desculpe eu não posso ajudar com a sua pergunta, mas talvez isso ajude a explicar por que o que você está procurando não pode simplesmente existir (ou ser qualquer bom).

Outras dicas

Para superar alguns dos isues ao usar graphviz (descibed por Tom). Nós definir as coordenadas mundiais visualizador para coincidir com coords mundo graphviz.

então. assumindo cada elemento visual tem um identificador exclusivo, construir um gráfico usando esses elementos. saída do gráfico como texto. tudo novo alinhamento com base em análise de saída. ?

-

Michael

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top