J'ai eu le temps de faire mûrir l'idée.
Voilà ce que je pense faire:
1) Me restreindre aux graphe planaires, ce sont les graphes pouvant être dessinés dans le plan sans croisement de fils.
2) Faire une sorte de carte de visibilité comme sur cette image: https://www.semanticscholar.org/paper/A-Unified-Approach-a-Visibility-Representation-of-Tamassia-Tollis/582212a037a08a4c59da05ebf648729d70cd7268/figure/7.
3) Je vais dessiner le graph sur cette carte.
Pour générer une représentation planaire d'un graph, ce document est pas trop mal: http://cs.rkmvu.ac.in/~shreesh/media/planarity.pdf
Je risque de prendre un peu de temps à le développer moi même.
Je pense utiliser boost graph pour ça à la place: http://www.boost.org/doc/libs/1_49_0/libs/graph/doc/planar_graphs.html
J'ai toujours eu un peu peur de Boost

et j'ai aussi peur de faire augmenter la taille du WebAssembly. On va voir.