Home C++ Lua GitHub Games Math Myself Contact

3D Force Directed Graph

So many times I have drawn out the connectivity of my projects, files, functions, etc. So many times that I decided such a task could be automated. Inspiration came from the Java SDK stress demo, or whatever its called, with the nodes that pop when close to one another. The force functions are probably the same too: negative gravity mixed with Hooke's spring force law.

I first attempted this before I ever wrote a language parser. These first attempts would interconnect common variable names like 'x' or 'i' dozens of times more than they should. With dreams of incorporating variable scoping and what not I put the project aside. Somewhere along the line after writing my own language parser/compiler I felt an urge to get back into it. I only managed to write the preprocessor's worth though, and even that occasionally will flip out on me.

Press '~' to get into the console. More on that will eventually be posted in the M_Foundation library page.

Right-Click Click to select a node. Drag to move that node.
Left-Click Drag about a node to rotate the view around it. Click on a connection listed in the upper-left corner to select that connected node.
Mouse Wheel Zoom in and out
S move left
F move right
R move up
V move down
E move forward
D move back
Important Console Commands:
Name Params Default Value Desc
load string filename Load a certain filename. Wildcards and what not are permitted.
use_old_loader int yesno 0 Enable the old loader. This attempts to parse C++ code, but does so poorly.
graph_range int range -1 Restrict the graph to only show range hops from the currently selected node.
Download the Windows Binary Here
Download the Source Code Here
Source Code Dependencies M_System3D , M_Math3D , M_Foundation