Also suchst du im Grunde sowas:
http://bl.ocks.org/paulovn/9686202
Nur in 3D ...
Ich glaub, ich würde ganz einfach vorgehen:
Code:
nimm den ersten Knoten (k1) und zeichne ihn
nimm alle Knoten, die direkt mit (k1) verknüpft sind und packe sie gleichmäßig verteilt auf eine Kugeloberfläche um (k1)
gehe alle Knoten durch, die direkt mit (k1) verknüpft sind. für jeden (kn):
gehe alle Knoten durch, die direkt mit (kn) verknüpft sind
ordne die gefundenen Knoten auf einer Halbkugel (die vom "parent" (=in diesem Fall (k1)) wegzeigt) an
und wiederholen, bis alle verbraucht sind.
... und zwischendurch natürlich Verknüpfungen zu bereits gezeichneten Knoten zeichnen.
Radius der ersten Kugel sollte von der Anzahl an direkten Verknüpfungen mit dem ersten Knoten abhängen.
Bei den weiten Halbkugeln, kann man Winkel (also evtl. 3/4 Kugel oder 1/4 Kugel) und Radius variieren.
Wenn es um Performance geht, sollte man evtl. auf einen Kubus statt einer Kugel setzen.
---
Wenn ich mir das richtig überlegt habe, hier ein Bsp:
k1 ist verknüpft mit k2, k3, k4
k2 ist verknüpft mit k1, k3, k5
k3 ist verknüpft mit k1, k2
k4 ist verknüpft mit k1
k5 ist verknüpft mit k2, k6
k1 zeichnen auf (0,0,0)
k1 Verknüpfungen durchgehen:
k2, k3, k4 zeichnen auf (-1,0,0) (0,-1,0) (0,0,-1) <- nicht gleichmäßig, aber keine Lust auf Formel und rechnen
k2 Verknüpfungen durchgehen:
Linie zu k1 schon vorhanden
Linie zu k3 zeichnen
k5 zeichnen auf (-2,0,0)
k3 Verknüpfungen durchgehen:
Linie zu k1 schon vorhanden
Linie zu k2 schon vorhanden
k4 Verknüpfungen durchgehen:
Linie zu k1 schon vorhanden
k5 Verknüpfungen durchgehen:
Linie zu k2 schon vorhanden
k6 zeichnen auf (-3,0,0)