Force directed graph layout in Elm
Implementation of force directed layout algorithm in Elm.
The aim of force directed graph drawing algorithms is to produce aesthetically pleasing layout of graphs by simulating attractive / repulsive forces among nodes of the graph.
here
See it in actionThings you can try:
- Several example graphs
- Move nodes using drag and drop
- Tweak layout algorithm parameters using sliders
Note this implementation is still experimental, but I'd like to make this into reusable library soon.
TODOs
- Add possibility to tweak layout algorithm parameters in UI
- Add sample graphs
- Add node drag & drop
- Implement random graph (tree?) generation
- Make Physics simulation code more readable
- linear-algebra should not be needed - implement the primitives in separate module
- Add parameter explanation hints
- Make node / edge rendering logic configurable
- Enable LayoutGraph initialization without randomization command (perhaps just with random gen seed?)