Le problème est que j'ai 10 nœuds (disons) et qu'il y a des connexions entre eux. Maintenant, je veux dessiner un graphique visuel illustrant ce qui précède avec des cercles comme des nœuds et des lignes comme des connexions entre eux. Mon problème est quel est l'algorithme pour le placement des nœuds à l'écran, disons que nous avons dessiné un cercle, alors l'autre cercle doit être dessiné comme non chevauchant que possible. S'il vous plaît, expliquez.Dessiner un graphe de nœud en Visual Basic
Répondre
Il existe plusieurs manières d'aborder ce problème, car il existe un certain nombre d'objectifs dans graph drawing qui ne sont pas compatibles entre eux. Ce qu'il faut éviter comprennent
- le nombre d'arêtes croisant
- la surface totale occupée et forme globale (compacité, le rapport d'aspect)
- arêtes trop longues
- petits angles entre les bords (bords qui se chevauchent)
Voici quelques approches.
Une simple codification consiste à placer vos nœuds sur un cercle et à les espacer uniformément. Puis ajoutez vos bords comme des lignes droites. Cela fonctionnera principalement.
Plus général est à model your nodes as springs qui se repoussent mutuellement. C'est l'idée derrière l'algorithme Kamada-Kawai, par exemple. Il maintient les noeuds séparés tout en minimisant la longueur des arêtes.
Une troisième approche est radial layout, où les nœuds sont placés sur des anneaux concentriques qui indiquent leur distance par rapport à un nœud racine choisi.
Je vous recommande de vérifier le paquet Graphviz pour avoir une idée de ce qui est possible. C'est facile à utiliser et amusant à jouer avec. Il existe des liens vers les bibliothèques Graphviz disponibles dans un certain nombre de langues, mais malheureusement, Visual Basic ne semble pas être l'un d'entre eux.
Modifier:This question est liée.
- 1. Etiquettes en Visual Basic
- 2. Hex-Value en Visual Basic
- 3. Visual Basic 6 événements
- 4. visual basic 2005 & mySQL
- 5. Visual Basic 2005 + mysql
- 6. Visual Basic 2008 'tests'
- 7. Formulaire Visual Basic 6
- 8. Comment utiliser un mutex dans Visual Basic
- 9. Visual Basic Vs Dreamweaver CS4
- 10. Erreur d'opacité Visual Basic 2008
- 11. Arraylist dans Visual Basic .net
- 12. Demande de formulaire de connexion Visual Basic
- 13. Espaces de noms Visual basic auto imports
- 14. En dehors de l'espace chaîne dans Visual Basic 6
- 15. Construire un éditeur de texte dans Visual Basic
- 16. Visual Basic 6.0 En passant par problème de référence
- 17. Visual Basic - Devinez le programme de couleur
- 18. Fonction de hachage Visual basic 6.0
- 19. Clé de produit Enregistrement - Visual Basic
- 20. Structures de données Visual Basic 6
- 21. Taille de tableau dans Visual Basic?
- 22. Proxy de savon WSDL Visual Basic 6
- 23. graphe (noeud et arêtes) en accès
- 24. Comment faire du développement et construire en Visual Basic 6.0
- 25. Propriétés dynamiques pour les classes en Visual Basic
- 26. Visual Basic ajouter un événement dans .NET 1.1
- 27. Comment est un graphe où chaque nœud est connecté à tous les autres nœuds?
- 28. Crypter un fichier avec RSA dans Visual Basic .NET
- 29. Visual Basic (pour Applications) Ressources d'apprentissage
- 30. Mot clé global dans Visual Basic 2005?
Je pense que graphviz sera le plus libre de tous les choix. Le dessin graphique n'est pas un problème simple. – Daishiman
Il existe différentes bibliothèques de dessins graphiques à utiliser avec VB.NET, y compris les liaisons à Graphviz. – reinierpost
@reinerpost: C'est génial - pouvez-vous fournir un lien? Je ne pouvais pas trouver un bon ... –